php strtotime功能显示1小时以上

时间:2012-12-16 14:35:57

标签: php xampp strtotime unix-timestamp

我正在尝试将 1355657846和1355677646 unix时间戳转换为 Y-M​​-D H:i:s格式。 问题出在H:i:s。它应该是 11:37:24和17:07:26 分别显示12:37:24和18:07:26。

<?php

echo date('Y-m-d H:i:s','1355657846');//2012-12-16 12:37:26,must be 11:37:26

echo date('Y-m-d H:i:s','1355677646');//2012-12-16 18:07:26,must be 17:07:26

?>

应该是11:37和17:07,因为我在unix timestamp conversion

中查看了它

以及这是我在Gmail帐户中收到邮件的时间。我从gmail获得了这些unix时间戳(使用php imap函数... $ overview-&gt; udate)

我正在本地xampp服务器上测试它。 任何人都可以建议我在哪里出错吗?

PS:我检查了related question in stackoverflow,但在这里我想将时间戳转换为日期时间,我认为无论时区如何都应该保持不变。

3 个答案:

答案 0 :(得分:0)

这可能是由于TimeZone设置造成的。了解PHP date_default_timezone_set()并确保您的本地时区符合您真正想要的时区。所有Unix时间戳在世界范围内都是相同的。但是全球的本地DATETIME值各不相同。您可以看到这篇文章(希望如此):

http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_201-Handling-date-and-time-in-PHP-and-MySQL.html

最好的问候,〜雷

答案 1 :(得分:0)

它定义为本地Web服务器中的时区设置。

检查php.ini的date.timezone值。 它也可能被htaccess文件或PHP脚本覆盖。

答案 2 :(得分:0)

一旦创建了DateTime,就会包含 strtotime。解析取决于服务器默认时区。

如果你想用好的时区来约会,有两种方法:

default_timezone_set('Europe/Paris');//for example 

或:

$date = DateTime::createFromFormat('U',$timestamp,new DateTimezone('Europe/Paris'));
echo $date->format('Y-m-d H:i:s);

您可以找到更多信息here