将日期时间从javascript发送到php时,管理夏令时

时间:2017-02-17 19:48:20

标签: javascript php mysql datetime

我需要将日期时间存储在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小时的差异。

我认为这可能与考虑夏令时有关,但我找不到如何做到这一点。

请告知。

4 个答案:

答案 0 :(得分:1)

当您始终将UTC日期时间发送到服务器并让javascript在显示时将其转换回来时,问题就不会发生。

答案 1 :(得分:0)

PHP日期将受php.ini文件中嵌入的时区信息的影响。

就mysql存储而言,您可能希望使用UTC或其他一些不受夏令时影响的标准来将您的日期时间存储在mysql中。然后,无论哪个浏览器读取它,它都应该根据它们的本地时区信息被转换回来。

请参阅此文章以进一步阅读:

Daylight saving time and time zone best practices

答案 2 :(得分:0)

您可以使用getTimezoneOffset()来检查它是否为DST,因为它会纠正DST。

我找到了这个解决方案 http://javascript.about.com/library/bldst.htm

答案 3 :(得分:0)

在php.ini文件中设置正确的时区信息就可以了。

感谢。