Я знаю, что вопросы по этой теме задавались снова и снова, но все чтение только усилило мое замешательство, поэтому я решил спросить здесь.
Я работаю над сайтом, где пользователь может хранить события, связанные с датой. Эта дата хранится в базе данных mysql как тип DATETIME.
Итак, что я «просто» хотел бы сделать: получить дату из базы данных и отформатировать ее, но каким-то образом, начиная с перехода на летнее время, дата показывается минус один час.
код:
$date = $item['date'] //<-- the result from the database (2015-11-27 08:15:00)
$dt = new DateTime($date, new DateTimeZone(date_default_timezone_get()));
echo $dt->format('G:i') // 8:15
Значение, которое фактически было записано в «поле даты» формы администрирования 9:15 и это то, что должно отображаться.
Пожалуйста, поправьте меня, если я ошибаюсь, но я думаю, что «Летнее время» похоже на общую основу. И переход на «зимнее время» может быть +1
,
echo $dt->getOffset() // 3600s = 1 hour
Если мое предположение верно, это смещение должно быть равно нулю в «Летнем времени», верно? Но это приводит к тому, что я не могу разобраться, так как я в часовом поясе Europe/Berlin
что само по себе определено быть UTC +1
Так что смещение это делает getOffset()
представлять и как я могу отобразить «правильное время»?
Спасибо впереди!
Задача ещё не решена.
Других решений пока нет …