Почему getdate (0) возвращает 1 как час? - PullRequest
2 голосов
/ 22 июня 2011

Я использую функцию getdate и собираюсь использовать ее для разбора временного интервала в секундах, днях, минутах, часах и т. Д. Однако я удивлен, что getdate(0)['hours'] равно 1.Что здесь происходит?

FWIW, полный вывод, который я получаю:

Array
(
    [seconds] => 0
    [minutes] => 0
    [hours] => 1
    [mday] => 1
    [wday] => 4
    [mon] => 1
    [year] => 1970
    [yday] => 0
    [weekday] => Thursday
    [month] => January
    [0] => 0
)

Ответы [ 2 ]

5 голосов
/ 22 июня 2011

January 1, 1970, 00:00 GMT было 01:00 в BST (британское стандартное время).Вероятно, на вашем сервере установлен часовой пояс.

См. этот запрос Wolfram Alpha.

Используйте date_default_timezone_set() для изменения часового пояса или используйте новый DateTime класс, который полностью осведомлен о часовом поясе.

0 голосов
/ 22 июня 2011

Полагаю, вы живете в Великобритании.

PHP настроен на использование местного часового пояса вашей страны.Это приводит к времени 1:00: GMT + 1 час для перехода на летнее время.

Существует 2 возможных решения:

  • Вычтите один час из используемой вами метки времени.
  • Настройте ваш скрипт на использование GMT.Используйте упомянутую функцию @pekka для этого.

Я предлагаю первое решение;вашему сценарию может потребоваться печатать отдельные времена вместе с интервалами, которые вы хотите преобразовать в местный часовой пояс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...