Исправление времени для перехода на летнее время в рельсах DateTime.parse

Просто добавив к миллиону вопросов о часовом поясе и проблемах летнего времени.

У меня есть форма с отдельными полями даты и времени, которые я объединяю, чтобы создать DateTime следующим образом

start_time = DateTime.parse("#{parse_date(form_date)} #{form_start_time} #{Time.zone}")

Если я заполняю свою форму с 21 августа 2012 года и 15:00, то это те значения, которые я вижу при перезагрузке формы. Если я тогда посмотрю на мой атрибут start_time в моей модели, он будет правильно установлен наTue, 21 Aug 2012 15:00:00 EST +10:00.

У меня возникает проблема, если я использую дату позже в этом году, когда наступит переход на летнее время (я нахожусь в Австралии). Если я использую 21 декабря 2012 и 15:00, тогда проверяю start_time, которое вижуFri, 21 Dec 2012 16:00:00 EST +11:00.

Моя интерпретация проблемы заключается в том, что дата сохраняется в моем текущем часовом поясе (+10: 00), поскольку это то, что я сказал DateTime.parse. Однако когда значение возвращается, Rails смотрит на дату и говорит: «Эй, это летнее время в декабре». и возврат времени в часовом поясе +11: 00.

Я хочу сказать DateTime.parse, чтобы сэкономить время в часовом поясе +11: 00, если действует DST. Ясно, что передача Time.zone в мою строку не достигает этого. Есть ли простой способ сделать это? Я вижу способы сделать это, используя Time # dst? но я подозреваю, что это приведет к созданию действительно ужасного запутанного кода. Я подумал, что может быть встроенный способ, которого мне не хватает.

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

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