Даты обучения, и они дают мне трудное время прямо сейчас.
$london = new DateTime(); $london->setTimestamp(0); $london->setTimeZone(new DateTimeZone('Europe/London')); echo $london ->format('dmY Hi-s');
результат:
01-01-1970 01-00-00
Должен ли быть Лондон в UTC +0:00
поэтому полночь? Например, Нью-Йорк возвращает 19:00 предыдущей даты, которая соответствует UTC -5:00
. Москва возвращается 01-01-1970 03-00-00
что опять неверно ( UTC +3:00
в отличие от UTC +4:00
)
Однако, когда не используется ->setTimestamp
, текущее время в Лондоне делает правильно.
Livecode: http://sandbox.onlinephpfunctions.com/
Кроме того, мой местный часовой пояс – Europe/Prague
( UTC +1:00
). Протестировано с date_default_timezone_set('Europe/London')
.
Я предполагаю, что в моей логике есть какая-то ошибка?
Это объясняется тем, что, по-видимому, Великобритания была на британском летнем времени 1 января 1970 года, на час раньше UTC (акцент мой):
В ходе опроса, проведенного зимой 1959-1960 годов, в котором проводились консультации с 180 национальными организациями, было высказано небольшое предпочтение в связи с изменением круглогодичного GMT + 1, но продолжительность летнего времени была расширена как судебное разбирательство, а не внутреннее использование Среднее время по Гринвичу отменено. [6] Дальнейшее расследование в 1966-67 годах привело к тому, что правительство Гарольда Уилсона представило эксперимент британского стандартного времени, а Британия оставалась на GMT + 1 в течение всего года. Это произошло между 27 октября 1968 года и 31 октября 1971 года, когда произошел возврат к предыдущей договоренности.
Timeanddate.com Time Zone Converter – отличный инструмент для поиска таких вещей.