2017-02-17 12 views
0

Мне нужно хранить данные в базе данных mysql.Управление летним временем при отправке datetimes из 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 или какой-либо другой стандарт, не подверженный летнему экономию, чтобы сохранить ваше datetime в mysql. Затем, независимо от того, какой браузер читает его, он должен быть преобразован обратно в соответствии с информацией о локальном часовом поясе.

Смотрите эту статью для дальнейшего чтения:

Daylight saving time and time zone best practices

0

Установка правильной информации часового пояса в php.ini файле сделал трюк.

Спасибо.