2017-02-17 118 views
0

我需要将日期时间存储在mysql数据库中。从javascript发送日期时间时管理夏令时时间到php

这些日期时间来自浏览器,因此美国,欧洲或亚洲或任何地方的用户将看到他们的正确时间。

在浏览器中,我有以下的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小时的差异。

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

请指教。

+1

你的数据库是否也有时区? – Machavity

回答

1

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

0

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

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

请参阅这篇文章进一步阅读:

Daylight saving time and time zone best practices

0

该解决方案设置php.ini文件中正确的时区信息的伎俩。

谢谢。