php時間戳與日期格式互轉
作者:佚名 時間:2012-04-07 分享到:
PHP時間存儲時有兩種,一是時間戳類型(1279852657)像一串數字,二是正常日期格式(2010-7-23) 。
正常日期類型是保存為DATE型的。
取得當前的時間戳,這樣就取得當前的時間戳了。
要轉回2010-7-23這種日期格式就要用到date()函數了,在PHP中date()函數比較常用。如取得當前日期,。
那么,怎樣把時間戳類型(1279852657)轉成正常日期格式(2010-7-23)呢?代碼如下:
這樣基本就可以了,'Y-m-d H:i:s'是現實日期的格式,具體可自行修改。
反之呢?把正常日期格式(2010-7-23)轉為時間戳類型(1279852657)呢?請看如下代碼:
$year=((int)substr("2010-7-23",0,4));//取得年份
$month=((int)substr("2010-7-23",5,2));//取得月份
$day=((int)substr("2010-7-23",8,2));//取得幾號
echo mktime(0,0,0,$month,$day,$year);
?>
這樣就能把正常日期轉成時間戳了,這里如果有時分秒也是同理,
$year=((int)substr($datetime,0,4));
$month=((int)substr($datetime,5,2));
$day=((int)substr($datetime,8,2));
$hour=((int)substr($datetime,11,2));
$minute=((int)substr($datetime,14,2));
$second=((int)substr($datetime,17,2));
echo mktime($hour,$minute,$second,$month,$day,$year);
?>
注意一下,你可能會發現現實的時間好像有差,PHP時差問題。解決辦法:
1、修改php.ini。打開php.ini查找date.timezone 去掉前面的分號= 后面加Asia/Shanghai,重啟apache服務器即可--缺點就是如果程序放到別人的服務器上,不能修改php.ini,那就奈何不得了。
2、在程序中添加時間的初始化的語句,即:或者這個可以由程序員任意設置,我的推薦。
時區標識符,大陸內地可用的值是:PRC,Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次為中國,重慶,上海,烏魯木齊) ,Etc/GMT-8,Asia/Harbin
港臺地區可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次為澳門,香港,臺北)
還有新加坡:Asia/Singapore
這樣就可以實現輸出的是北京時間了