Как хранить повторяющиеся даты с учетом перехода на летнее время

Я храню события в моей базе данных. У меня есть даты начала и окончания, tickets_start и tickets_end (для случаев, когда продажи билетов действительно начинаются / заканчиваются - в отличие от начала / конца фактического события).

До сих пор я создавал методы, которые делают все забавные вещи, такие как преобразование даты / времени в GMT перед сохранением, а затем обратно в соответствующий часовой пояс для отображения.

Я храню часовой пояс в поле varchar со значениями, такими как "America / New_York".

Но - теперь мне нужно начать иметь дело, если пользователь хочет разрешить повторение событий. Я делал это раньше, и это не так уж важно, но никогда в разных часовых поясах.

Сначала я думал, что это не будет большой проблемой, но потом понял, что - если начальная дата начала была в июле (как пример), и она повторяется каждый месяц в течение года, в какой-то момент переход на летнее время сделает это так что преобразование из GMT изменит время по-другому. Один месяц, при преобразовании 12:00, он изменит его на -5, а в следующий - на -4 из-за летнего времени.

Моя текущая мысль заключается в том, что я сохраню "dst" tinyint (1) для того, были ли введены даты начала / окончания во время летнего времени, а затем создаю метод, чтобы изменить время на час, если / когда это необходимо.

Но - подумал я бы спросил здесь в надежде, может быть, есть «нормальное» для этого или легкое то, о чем я не думаю.

(cakephp 2.4.x)

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

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