Я также искал руководство 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).
В следующий раз попробуйте немного сложнее пробовать вещи, прежде чем спрашивать.