date()函数输出错误的结果 - PHP

时间:2013-02-13 12:10:22

标签: php date epoch

这就是我所做的 - :

  1. 在mysql中生成UNIX_TIMESTAMP结果。它出来了 1360756718秒。
  2. 由于我在GMT +5.30,在5小时30分钟内获得了秒数。结果为19800
  3. 跑这个功能 - > date('j M Y H:i:s',(1360756718 + 19800))。
  4. 但不幸的是,答案是1 hour超过原始时间。我的意思是1 hour。结果为13 Feb 2013 18:28:38,应为13 Feb 2013 17:28:38

    我在哪里?

6 个答案:

答案 0 :(得分:3)

嗯,你在+5:30但是夏令时,我们仍然是1小时后。所以你现在只有+4:30

答案 1 :(得分:1)

我认为您的时区设置不正确。您需要挖掘Apache / PHP / Mysql设置以找出它的设置。

答案 2 :(得分:1)

echo date( 'd.m.Y H:i:s', '1360756718' ); // 13.02.2013 13:58:38
echo date( 'd.m.Y H:i:s',  ( '1360756718'+19800 ) ); // 13.02.2013 19:28:38

对我来说,这是按计划出来的。你确定你是在合适的时间开始的吗?正如一些人已经提到的,问题很可能在于你的时区或夏令时。

答案 3 :(得分:1)

请先检查您当前的时区。 Here you can check all supported timezones as well

答案 4 :(得分:0)

您可以尝试添加:

ini_set('date.timezone', 'My/Timezone');

从php 5.1开始,也可以这样做:

date_default_timezone_set ( string $timezone_identifier )

http://www.php.net/manual/en/function.date-default-timezone-set.php

将时间设置为您自己的时区。可用于php的时区在这里:

http://www.php.net/manual/en/timezones.php

答案 5 :(得分:0)

其他答案说您应该检查并更正您的时区设置。 我会这样做,因为它更正确(关于夏令时等等)。

如果你想轻松尝试gmdate函数:

string gmdate ( string $format [, int $timestamp = time() ] )

这个将始终以GMT计算 - 您不必检查服务器设置。 (但它也会忽略夏令时。)