PHP strtotime()函数错误1小时?

Dav*_*vid 14 php mysql strtotime unix-timestamp

在将日期和时间插入MySQL数据库之前,我使用PHP将日期和时间转换为时间戳.

我的问题是,当我使用PHP的strtotime函数时,输出时间戳比实际时间晚-1小时.

例如,考虑今天的日期:2010年7月21日.当我使用PHP代码时:

<?php
$my_timestamp = strtotime("07/21/2010");
echo $my_timestamp;
?>
Run Code Online (Sandbox Code Playgroud)

发回的时间戳是GMT等效MINUS 1小时.即我回来了:2010年7月20日23:00:00 GMT而不是2010年7月21日00:00:00 GMT.

我住在英国所以我的时区是GMT.我已经使用date_default_timezone_set('Europe/London')在脚本中声明了我的时区,并且我还确保将php.ini文件设置为'Europe/London'.

这可能与夏令时有关吗?如何在不添加1小时的所有日期的情况下解决问题?

Yah*_*hel 27

在夏令时期间,欧洲/伦敦时间不是格林威治标准时间.您需要将其设置为UTC.

date_default_timezone_set('UTC');

date_default_timezone_set('GMT'); 可能有用,但正如Kenneth在下面的评论中指出的那样,它已被弃用.

  • 注意:GMT已经在更新版本的PHP中被折旧,虽然它仍然受到临时支持,但强烈建议使用UTC. (3认同)