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

2022-08-31 01:03:35

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

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

例如,考虑今天的日期:07/21/2010。当我使用php代码时,例如:

<?php
$my_timestamp = strtotime("07/21/2010");
echo $my_timestamp;
?>

发回的时间戳是 GMT 等价减去 1 小时。即我回来: 20 七月 2010 23:00:00 GMT 而不是 21 七月 2010 00:00:00 GMT.

我住在英国,所以我的时区是格林威治标准时间。我使用date_default_timezone_set('Europe/London')在脚本中声明了我的时区,并且我还确保php.ini文件设置为“欧洲/伦敦”。

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


答案 1

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

date_default_timezone_set('UTC');

date_default_timezone_set(“格林尼治标准时间”);可能有效,但是,正如Kenneth在下面的评论中指出的那样,它被弃用了。


答案 2

伦敦时区在夏季以英国夏令时表示。话虽如此,最好以 UTC 存储时间,并以 UTC 或本地时间向最终用户显示时间。

确保您的系统时间为 UTC 也可能是明智的。


推荐