PHP strtotime и MySQL UNIX_TIMESTAMP возвращают разные целые числа - PullRequest
0 голосов
/ 11 сентября 2010
echo strtotime('2010-09-11 12:15:01');

Возвращает: 1284207301

SELECT UNIX_TIMESTAMP('2010-09-11 12:15:01')

Возвращает: 1284200101

Почему разница?

Ответы [ 4 ]

3 голосов
/ 11 сентября 2010

Ответ в статье php.net о strtotime :

Эта функция будет использовать переменную окружения TZ (если она доступна) для вычисления метки времени.Начиная с PHP 5.1.0, существуют более простые способы определения часового пояса, который используется во всех функциях даты и времени.Этот процесс объясняется на странице функции date_default_timezone_get ().

Короткая версия: strtotime по умолчанию использует ваш часовой пояс, UNIX_TIMESTAMP - нет.

2 голосов
/ 11 сентября 2010

Это обычно вызывается настройкой PHP и MySQL на использование разных часовых поясов, а также несоответствиями системного времени, если они расположены на разных серверах.прошло с эпохи UNIX в полночь 1 января 1970 года по Гринвичу, поэтому различия часовых поясов будут давать разные временные метки.

1 голос
/ 11 сентября 2010

Я предполагаю, что время Unix - это GMT, а другое - ваш местный часовой пояс, разница между двумя выходами равна 2 часа (7200/60/60)

1 голос
/ 11 сентября 2010

1284207301-1284200101 = 7200 -> 2 часа. Такая идеально округленная разница не из-за ошибки, а из-за разницы во времени. Скорее всего, один в UTC / GMT, а другой в UTC +/- 2

...