Как хранить повторяющиеся даты с учетом перехода на летнее время
Я храню события в моей базе данных. У меня есть даты начала и окончания, tickets_start и tickets_end (для случаев, когда продажи билетов действительно начинаются / заканчиваются - в отличие от начала / конца фактического события).
До сих пор я создавал методы, которые делают все забавные вещи, такие как преобразование даты / времени в GMT перед сохранением, а затем обратно в соответствующий часовой пояс для отображения.
Я храню часовой пояс в поле varchar со значениями, такими как "America / New_York".
Но - теперь мне нужно начать иметь дело, если пользователь хочет разрешить повторение событий. Я делал это раньше, и это не так уж важно, но никогда в разных часовых поясах.
Сначала я думал, что это не будет большой проблемой, но потом понял, что - если начальная дата начала была в июле (как пример), и она повторяется каждый месяц в течение года, в какой-то момент переход на летнее время сделает это так что преобразование из GMT изменит время по-другому. Один месяц, при преобразовании 12:00, он изменит его на -5, а в следующий - на -4 из-за летнего времени.
Моя текущая мысль заключается в том, что я сохраню "dst" tinyint (1) для того, были ли введены даты начала / окончания во время летнего времени, а затем создаю метод, чтобы изменить время на час, если / когда это необходимо.
Но - подумал я бы спросил здесь в надежде, может быть, есть «нормальное» для этого или легкое то, о чем я не думаю.
(cakephp 2.4.x)