#php #time #timezone
Вопрос:
Мы испытываем некоторые странные несоответствия с функциями времени в приложении PHP, которое у нас есть.
У нас есть некоторый код, который записывает записи в базу данных, и он регистрирует текущую дату и время с помощью:
$currentDate = Date("Y-m-d");
$currentTime = Date("H:i:s");
Если оставить эти элементы в покое, они попадут в базу данных за 4 часа до текущего часового пояса, в котором мы находимся (мы находимся в часовом поясе EST).
Теперь, конечно, это достаточно легко исправить, добавив:
date_default_timezone_set("America/New_York");
Проблема в том, что не так давно нам не нужно было добавлять это в файл PHP. Всякий раз, когда мы добавляли записи в базу данных, они вводились в соответствии с правильным часовым поясом.
Итак, мы пытаемся выяснить, откуда PHP может извлекать свой часовой пояс по умолчанию.
Он извлекает его с сервера, на котором находятся файлы?
Он извлекает его из файла php.ini?
Он извлекает его из файла .htaccess?
Или это какая-то комбинация, зависящая от множества факторов?
Кто-нибудь может, пожалуйста, пролить немного света на это?
Комментарии:
1. Сначала он будет извлекаться из php.ini, затем с сервера, если он не определен. Видишь php.net/manual/en/function.date-default-timezone-get.php
2. Вместо того, чтобы путаться с часовым поясом по умолчанию, используйте
DateTime
иDateTimezone
.3. Когда @aynber говорит «сервер», это все, что определено операционной системой, Windows, Linux, Mac, что угодно.