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
这样就可以实现输出的是北京时间了