我需要将日期时间存储在mysql数据库中。
这些日期时间来自浏览器,因此美国,欧洲或亚洲或任何地方的用户都会看到正确的时间。
在浏览器中,我有以下javascript代码:
var d = new date();
var iso_date_string = d.toISOString();
// produces something like "2017-02-17T19:42:27.100Z"
我将此字符串发送到运行PHP的服务器,在我的服务器代码中我有:
$date = date( "Y-m-d H:i:s", strtotime("2014-02-17T19:42:27.100Z") );
然后我在MySQL中插入此值。
一切正常,除了我没有得到确切的时间,我在MySQL中存储的内容与我在计算机上的时间之间存在1小时的差异。
我认为这可能与考虑夏令时有关,但我找不到如何做到这一点。
请告知。
答案 0 :(得分:1)
当您始终将UTC日期时间发送到服务器并让javascript在显示时将其转换回来时,问题就不会发生。
答案 1 :(得分:0)
PHP日期将受php.ini文件中嵌入的时区信息的影响。
就mysql存储而言,您可能希望使用UTC或其他一些不受夏令时影响的标准来将您的日期时间存储在mysql中。然后,无论哪个浏览器读取它,它都应该根据它们的本地时区信息被转换回来。
请参阅此文章以进一步阅读:
答案 2 :(得分:0)
您可以使用getTimezoneOffset()来检查它是否为DST,因为它会纠正DST。
答案 3 :(得分:0)
在php.ini文件中设置正确的时区信息就可以了。
感谢。