DST конфликт на CET DateTime php - PullRequest
       32

DST конфликт на CET DateTime php

0 голосов
/ 05 апреля 2020

У меня проблема (возможно, ошибка) на php.

Это мой код:

$date = new \DateTime();
$date->setTimezone(new \DateTimeZone('UTC'));
echo 'UTC : '.$date->format('Y-m-d H:i:s').'<br>';
$date->setTimezone(new \DateTimeZone('CET'));
echo 'CET : '.$date->format('Y-m-d H:i:s').'<br>';

И это мой запрос на mysql, чтобы получить время с часовым поясом.

SELECT @@system_time_zone as tz, now() 

Я ожидаю, что результат должен быть таким же, но эта картина результат в то же время:

enter image description here

Я нашел проблему в DST(Daylight Saving time) в CET часовом поясе.

У кого-нибудь есть идеи, как это исправить?

  • php версия: 7.2
  • часовой пояс сервера: CET
  • ОС сервера: CENTOS

1 Ответ

2 голосов
/ 06 апреля 2020

Не передавать сокращения часовых поясов на DateTimeZone. Вместо этого используйте полностью определенный идентификатор часового пояса IANA на основе населенного пункта. Например, Europe/Berlin. Он будет правильно отличать CET от CEST в зависимости от рассматриваемой даты / времени.

Об этом говорится в предупреждениях в верхней части этой страницы в документации PHP .

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