2009-06-09 2 views
8

Когда я использую current_timestamp с MySQL, я получаю правильное время, но когда я используювремя MySQL и время PHP не то же самое

$mysqldate = date('Y-m-d H:i:s');

я получаю дату с с задержкой часов (например, 4 : 42 PM - 17:42). Я понял, что обе функции используют локальное время сервера - может кто-то объяснить разницу?

Спасибо.

+1

Вы уверены, ваш MySQL и PHP находятся на тот же сервер, не так ли? Некоторые хосты помещают MySQL на другой сервер. – ceejayoz

ответ

9

Глобальное время системы будет установлено через/и т.д./файл МестноеВремя, который будет либо символическим или копия файла зоны из/usr/share/zoneinfo/в большинстве систем. Приложения будут использовать это по умолчанию.

PHP может изменить это в несколько различных способов:

  1. date.timezone в php.ini
  2. установки переменной окружения TZ, например, putenv("TZ=US/Central");
  3. date_default_timezone_set функции (в PHP> = 5.1.0)

MySQL может переопределить сразу, выполнив следующий запрос после подключения:

SET time_zone = 'US/Central' 
1

Может быть, ваш PHP-сервер думает, что в другом часовом поясе или она использует другую локаль и летнее время правила.

+0

Как мне заставить PHP дать мне по умолчанию время сервера, указанное на сервере сервера? PHP date.timezone не установлен – daniel

2

Есть PHP региональных настроек, он берет его из php.ini, а не от системного времени

Смежные вопросы