Подтвердить что ты не робот

Различные параметры timezone_types в объекте DateTime

Я использую Doctrine2 в Postgres. В одной таблице у меня есть два разных типа даты: birthdate:date и created_at:datetimetz. Оба становятся объектами DateTime, но с разными timezone_type. Вот список:

created_at datetimetz:

DateTime Object
(
    [date] => 2013-04-18 11:54:34
    [timezone_type] => 1
    [timezone] => +02:00
)

birthdate дата:

DateTime Object
(
    [date] => 1970-01-01 00:00:00
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

Мне нужно форматировать объекты таким же образом. Оба должны иметь timezone_type=3.

Как я могу это достичь?

4b9b3361

Ответ 1

Часовые пояса могут быть одним из трех разных типов в объектах DateTime:

  • Тип 1; Смещение UTC, например, в new DateTime("17 July 2013 -0300");
  • Тип 2; Сокращение часового пояса, например, в new DateTime("17 July 2013 GMT");
  • Тип 3: идентификатор часового пояса, например, new DateTime( "17 July 2013", new DateTimeZone("Europe/London"));

Только объекты DateTime с прикрепленными временными часами типа 3 позволят правильно выполнять DST.

Чтобы всегда иметь тип 3, вам нужно будет сохранить часовой пояс в своей базе данных как принятые идентификаторы из этот список и применить его к своей Объект DateTime при создании экземпляра.