Директива Date.timezone в php.ini
Директива Date.timezone устанавливает часовой пояс для даты и времени, которое будет возвращать PHP.
date.timezone string
Скорее всего оно будет не Вашей временной зоны, так как по умолчанию время в PHP устанавливается в UTC (не GMT).
Если время на сервере для Вас имеет значение, тогда в php.ini находите и редактируйте директиву Date.timezone, параметром которой укажите необходимую временную зону.
Например, для Новосибирска:
date.timezone = Asia/Novosibirsk
Для Москвы (+3) это выглядит так:
date.timezone = Europe/Moscow
Для Киева (+2):
date.timezone = Europe/Kiev
Узнать как правильно пишется Ваша временная зона можно так:
print_r( DateTimeZone::listIdentifiers( ) );
Это выдаст полный список временных зон.
Директива Date.timezone относиться к режиму PHP_INI_ALL, поэтому значение может быть установлено отовсюду.
Полагаться на данную директиву можно далеко не всегда. Очень часто случаются ситуации, когда часовой пояс показывает неправильное время. Например, для часового пояса Europe/Kiev время показывает не правильно, что заставляет изменять на другой часовой пояс - Europe/Minsk.
Чтобы данной ситуации не случилось, необходимо всегда самостоятельно контролировать время. Для этого, например, можно создать переменную в отдельном конфигурационном файле:
$added_time = time( ) + ( 0 * 60 * 60 );
Добавления осуществлять так:
$thistime = date( "Y-m-d H:i:s", $added_time );
В скрипте можно установить временную зону командой date_default_timezone_set('America/Los_Angeles');
Считать текущую зону командой date_default_timezone_get();
Коррекцию осуществлять так
code:
$timedifference = -1;
$time_client = $timedifference * 3600
$real_time = time() + $time_client;
echo strftime('%d.%m.%Y %H:%M:%S', $real_time);
$time_client = $timedifference * 3600
$real_time = time() + $time_client;
echo strftime('%d.%m.%Y %H:%M:%S', $real_time);
http://profiphp.ru/directives/date_timezone.html