PHP дата возвращает неправильное время

Следующий скрипт возвращает неверное время после звонкаdate_default_timezone_set("UTC")

<code><?PHP   
    $timestamp = time();
    echo "<p>Timestamp: $timestamp</p>";

    // This returns the correct time
    echo "<p>". date("Y-m-d H:i:s", $timestamp) ."</p>";


    echo "<p>Now I call 'date_default_timezone_set(\"UTC\")' and echo out the same timestamp.</p>";
    echo "Set timezone = " . date_default_timezone_set("UTC");

    // This returns a time 5 hours in the past
    echo "<p>". date("Y-m-d H:i:s", $timestamp) ."</p>";

?>
</code>

Часовой пояс на сервереBST, Итак, что должно произойти, это то, что второй вызов «дата»; должен вернуться через 1 час после первого звонка. Он действительно возвращается через 5 часов после первого.

Должен отметить, что сервер изначально был настроен с часовым поясом EDT (UTC-4). Это было изменено на BST (UTC +1) и сервер был перезапущен.

Я не могу понять, если это проблема PHP или проблема с сервером.

 gargantuan13 апр. 2012 г., 13:22
Часовой пояс: Европа / Лондон
 gargantuan13 апр. 2012 г., 13:24
-bash-3.2 $ date - & gt; Пт 13 апреля 12:08:21 BST 2012
 phihag13 апр. 2012 г., 13:36
Это время совершенно неверно в любом случае. Бежатьntpdate исправить часы вашего компьютера (см. мой обновленный ответ).
 BenOfTheNorth13 апр. 2012 г., 13:21
Что показывает date_default_timezone_get ()before вы меняете часовой пояс?
 s.webbandit13 апр. 2012 г., 13:23
И каков ваш сервер?date Терминальная команда возвращается?

Ответы на вопрос(3)

Вы должны проверить руководство php для правильного часового пояса вашей страны. Затем установите его в функции date_default_timezone_set (). Для пояснения я объяснил это здесьhttp://t2techblog.com/php-a-simple-function-for-getting-the-current-nigeria-local-time/

 18 июн. 2015 г., 03:53
Мне очень жаль, что эта функция и мои тексты переполнены. Я новичок здесь ... Все еще выясняю, как все работает
 18 июн. 2015 г., 03:33
Возможно, вы могли бы привести пример.
 18 июн. 2015 г., 03:50
Пример: простая функция, которая возвращает правильное время в моей стране (Нигерия) с приветственным сообщением. & lt;? php function get_ng_time () {date_default_timezone_set ("Африка / Лагос"); $ время = дата ('h: i A'); $ message = & quot; Здравствуйте, добро пожаловать в мой блог. Это ". $ Time." здесь, в Нигерии. вернуть сообщение $; }? & gt;

просто установите свой регион с помощью следующего кода

   date_default_timezone_set("Asia/Bangkok");//set you countary name from below timezone list
    echo $date = date("Y-m-d H:i:s", time());//now it will show "Asia/Bangkok" or your date time

Список поддерживаемых часовых поясов http://www.php.net/manual/en/timezones.php

Решение Вопроса

Это почти наверняка не ошибка в php, но в вашей локальной конфигурации часового пояса.

Скорее всего, вы фактически не меняли общесистемный часовой пояс, а только интерактивный дисплей. Проверь это/etc/localtime соответствует тому, что вы ожидаете. В системах Debian вы можете запустить tzselect (с привилегиями суперпользователя), чтобы установить общесистемный часовой пояс.

После установки часового пояса вам, возможно, придется сбросить настройки часов. Во многих системах это должно происходить автоматически с течением времени, но вы можете сделать это вручную, запустивntpdate -u pool.ntp.org.

Ваш ответ на вопрос