您好,欢迎访问一九零五行业门户网

php时间戳问题

php函数中的date函数在某些系统(如 windows)中限制为从 1970 年 1 月 1 日到 2038 年 1 月 19 日。
现在我有个时间戳是超过了2038年后,用date不能正常转化成正确的标准时间格式。
还有一个问题就是我有个时间戳1356969600,转化成正常效果是2013-1-1 00:00:00
例子 
$dt = new datetime('@1356969600');echo $dt->format('y-m-d h:i:s');
通过例子转化却变成了2012-12-31 16:00:00,比正常效果足足少了八个小时
回复讨论(解决方案) date_default_timezone_set(prc);
加上这句试试看看
date_default_timezone_set(prc);
加上这句试试看看
这个没用的,这个时间戳又不是实时更新的,都是过去的时间,故没用,你可以试试看
8小时是因为中国在+8区。
最好在php.ini里修改timezone
时间戳是从1970年1月1日开始的秒数,跟时区无关。
手册: http://www.php.net/manual/en/datetime.construct.php
// using a unix timestamp. notice the result is in the utc time zone.
$date = new datetime('@946684800');
echo $date->format('y-m-d h:i:sp') . \n;
gettimezone()->getname(),\n;
echo $dt->format('y-m-d h:i:s'), \n;
echo date('y-m-d h:i:s',1356969600),\n;
date_default_timezone_set(asia/shanghai);
$dt = new datetime('@1356969600');
echo $dt->gettimezone()->getname(),\n;
echo $dt->format('y-m-d h:i:s'), \n;
echo date('y-m-d h:i:s',1356969600),\n\n;
date_default_timezone_set(asia/shanghai);
$dt = new datetime('@1356969600');
echo $dt->gettimezone()->getname(),\n;
echo $dt->format('y-m-d h:i:s'), \n;
echo date('y-m-d h:i:s',1356969600),\n;
$dt->settimezone(new datetimezone('asia/shanghai'));
echo $dt->gettimezone()->getname(),\n;
echo $dt->format('y-m-d h:i:s'), \n;
echo date('y-m-d h:i:s',1356969600),\n;
gettimezone()->getname(),\n;
echo $dt->format('y-m-d h:i:s'), \n;
echo date('y-m……
echo $dt->format('y-m-d h:i:s'), \n; // 2012-12-31 16:00:00
date('y-m-d h:i:s',1356969600),\n; // 2013-01-01 00:00:00
时区的设置,我在配置文件中配置好了,配置的是prc
datetime::format 被设计成不受外部设置影响(面向对象就应该如此)
所以无论你如何改变环境参数 date_default_timezone ,都不会影响输出结果
要想改变 datetime::format 的时区设置,需要向
datetime::settimezone 传入一个时区对象 datetimezone
比如 $d = new datetime('@1356969600');$d->settimezone(new datetimezone('prc'));echo $d->format('y-m-d h:i:s');
2013-01-01 00:00:00 
时区问题吧……
看看我的最后一段
引用 5 楼 helloyou0 的回复:gettimezone()->getname(),\n;
echo $dt->format('y-m-d h:i:s'), ……
你$dt = new datetime('@1356969600');中的@1356969600时间轴生成的时候用的是哪个时间设置,转换的时候要统一,否则就会出现你那样的问题如,生成的时候用:date_default_timezone_set(prc);转换页面也必须用:date_default_timezone_set(prc);
其它类似信息

推荐信息