Я получаю время:
0001-01-01T00:00:00.000Z
Greenwich Mean Time
Я сохраняю это в DateTime как:
$event->startTime = new DateTime($item->startTime, new DateTimeZone('GMT'));
Что дает мне:
protected 'startTime' =>
object(DateTime)[137]
public 'date' => string '0001-01-01 00:00:00' (length=19)
public 'timezone_type' => int 2
public 'timezone' => string 'Z' (length=1)
Что означает этоигнорирует часовой пояс.Из документов:
Примечание:
Параметр $ timezone и текущий часовой пояс игнорируются, когда параметр $ time либо является меткой времени UNIX (например, @ 946684800), либо указывает часовой пояс(например, 2010-01-28T15: 00: 00 + 02: 00).
Если впоследствии я переопределю его:
$event->startTime->setTimezone(new DateTimeZone('GMT'));
Я получу:
protected 'startTime' =>
object(DateTime)[137]
public 'date' => string '0001-01-01 00:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
Итак, ответ говорит, что часовой пояс должен быть GMT / UCT, который равен +0, но PHP принимает решение tl;dr , и я получаю по умолчанию часовой пояс php.ini +2.Разве это не неправильно?
В любом случае, я буду использовать время начала в качестве обратного отсчета, поэтому часовой пояс имеет решающее значение.Мой вопрос: правильно ли мне переписать часовой пояс на UCT?Это даст мне правильное время, когда я собираюсь использовать DateTime :: diff?