2015-07-01 2 views
0

У меня возникла, казалось бы, простая проблема с установкой часового пояса по умолчанию в PHP. Я пытаюсь использовать default_timezone_set(), чтобы повлиять на мою функцию mktime() безуспешно.PHP Default Timezone Set

Короче говоря, мой сервер настроен на UTC, и я устанавливаю часовой пояс, используя default_timezone_set(), а затем вызываю mktime(), чтобы установить отметку даты даты базы данных.

Однако время в миллисекундах, которое возвращается, возвращается как время UTC. Я отозвал default_timezone_get(), и он действительно возвращается в качестве часового пояса, который я устанавливаю, и не могу определить, почему, как только я успешно установил часовой пояс, он не сможет повлиять на функцию mktime().

Я что-то упустил? Не задает ли часовой пояс по умолчанию использовать все функции даты/времени в PHP?

+1

Вы когда-нибудь слышали о классе PHP 'DateTime'? –

+0

DateTime отлично, но [это не миллисекунды] (http://php.net/manual/en/class.datetime.php). – DanielM

+0

Также необходимо убедиться, что время datetime, которое вы заполняете 'mktime()' from, совпадает с часовым поясом по умолчанию - см. Фрагмент кода по адресу http://3v4l.org/f9PmP – Dezza

ответ

2

Unix временные метки являются всегда в UTC, Вы должны преобразовать его в соответствующую часовой пояс после вы получаете временную метку.

+1

Вы уверены, что это правильно? В руководстве, по-видимому, предлагается другое: http://php.net/manual/en/function.mktime.php#refsect1-function.mktime-errors – DanielM

+0

нм, проверил его сам, это выглядит правильно: http: // 3v4l .org/aSbhX – DanielM

0

Вы пытались использовать date_default_timezone_set? Из mktime manual

<?php 
// Set the default timezone to use. Available as of PHP 5.1 
date_default_timezone_set('UTC'); 

// Prints: July 1, 2000 is on a Saturday 
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000)); 

// Prints something like: 2006-04-05T01:02:03+00:00 
echo date('c', mktime(1, 2, 3, 4, 5, 2006)); 
?> 
0

Ну немого меня здесь, я просто понял, что я не звонил часовой пояс набор из третьего файла PHP и, конечно, функции date_default_timezone_set() не может повлиять на отдельный файл.

Однако ответы и комментарии дали мне несколько новых идей о том, как с этим справиться! Спасибо всем за вклад.