PHP DateTime DST - PullRequest
       11

PHP DateTime DST

4 голосов
/ 16 марта 2012

Я также искал руководство по 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 вручную?

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

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

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

1 Ответ

5 голосов
/ 16 марта 2012

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

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...