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