Загадка Летнего времени PHP

У меня общий вопрос о переходе на летнее время. Я предполагаю, что это не совсем специфично для PHP, но я пишу на PHP, поэтому я думаю, что было бы неплохо включить его.

У меня есть приложение-календарь, созданное с использованием jquery fullcalendar. Пользователь просматривает события в своем местном часовом поясе, а мой сервер сохраняет их в формате UTC в mysql. (Другие вопросы по stackoverflow предполагают, что это лучший способ работы с часовыми поясами.) Таким образом, происходит преобразование каждый раз, когда пользователь сохраняет или просматривает события в календаре. Это работает нормально, но я не понимаю, как лучше всего справиться с переходом на летнее время.

Например, скажем, пользователь в часовом поясе EST (восточное стандартное время) создает событие, когда оно НЕ является переходом на летнее время в 3 часа дня, которое повторяется каждый день. Мой код PHP использует стандартный класс DateTime (и DateTimeZone) для преобразования между UTC и EST по UTC-5: 00. Когда летнее время активно, часы переводятся на один час вперед, и PHP вместо этого переводит между UTC и EST к UTC-4: 00. С точки зрения пользователя, событие затем смещается от первоначального 15:00 до 16:00. Это не то, что хотят мои пользователи и я. Событие в 3 часа дня должно остаться в 3 часа дня независимо от перехода на летнее время. Каков наилучший способ справиться с этим? Есть ли способ в PHP игнорировать летнее время?

Мой код:

$getDate = new DateTime($storedDate, new DateTimeZone('UTC'));
$getDate->setTimezone(new DateTimeZone('America/New_York'));
$getDateString = $getDate->format('Y-m-d H:i:s');

БОЛЬШЕ ИНФОРМАЦИИ: (скопировано из моих комментариев ниже)

Только первое вхождение повторяющегося события сохраняется. Все остальные события создаются на лету в соответствии с тем, какой календарь просматривает пользовательский запрос (просмотр месяца, недели или дня). При том, как я его кодировал, он создает только вхождения, которые будут видны в представлении.

Дело в том, что мне также нужно сохранять его постоянным для других часовых поясов. Чтобы продолжить исходный пример, 3 вечера должны оставаться 3 вечера в EST (независимо от летнего времени), но если событие просматривается в центральное время, событие также должно оставаться 14:00 (независимо от летнего времени).

По сути, мне нужно как-то игнорировать переход на летнее время.

Ответы на вопрос(2)

Ваш ответ на вопрос