PHP DateTime DST

Я также искал руководство PHP и StackOverflow, но на самом деле не нашел правильный ответ на мой вопрос. Мои даты хранятся в формате UTC. Теперь, если я это сделаю:

$date = new DateTime('2012-03-16 14:00:00', 'UTC'); $date->setTimezone('Europe/Budapest'); 

Будет ли DateTime :: setTimezone () автоматически устанавливать DST? Итак, если я форматирую строку, она будет выводить 15:00:00 в летнее время и 16:00:00 в зимнее время? Или мне нужно установить DST вручную?

Связанный с этим вопрос, если я хочу получить независимое от времени DST время (которое я могу сохранить), будет ли следующая работа?

 $date = new DateTime('now', 'UTC'); $date->format('Ymd H:i:s'); 

Или лучше использовать простой gmdate('Ymd H:i:s') ?

Ваше предположение верно.

Кроме того, вам понадобилось бы 10 секунд, чтобы убедиться в этом.

Редактировать:

Правильный синтаксис:

 $date = new DateTime('2012-03-16 14:00:00', new DateTimeZone('UTC')); 

Что касается вашего второго вопроса. Часовой пояс, переданный в конструкторе DateTime, является часовым поясом «reference».

Вы должны по-прежнему звонить -> setTimeZone (новый DateTimeZone ('UTC')), чтобы отформатировать его в часовом поясе UTC, если часовой пояс по умолчанию также не был установлен в UTC (date_default_timezone_set).

В следующий раз попробуйте немного сложнее пробовать вещи, прежде чем спрашивать.