Tempo de correção para horário de verão em rails DateTime.parse

Apenas adicionando ao milhão de perguntas sobre problemas de fuso horário e horário de verão por aí.

Eu tenho um formulário com campos separados de data e hora que eu combino para criar um DateTime como assim

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

Se eu preencher meu formulário com 21 de agosto de 2012 e 15:00, esses são os valores que vejo quando recarrego meu formulário. Se eu olhar para o meu atributo start_time no meu modelo, ele está corretamente configurado paraTue, 21 Aug 2012 15:00:00 EST +10:00.

O problema que estou tendo ocorre se eu usar uma data no final deste ano, uma vez que o horário de verão entrar em ação (eu estou na Austrália). Se eu usar 21 dez 2012 e 15:00, verifique start_time que eu vejoFri, 21 Dec 2012 16:00:00 EST +11:00.

Minha interpretação do problema é que a data está sendo salva no meu fuso horário atual (+10: 00), pois é isso que eu disse ao DateTime.parse para fazer. No entanto, quando o valor é retornado, o Rails está observando a data e dizendo "ei, é o horário de verão em dezembro" e retornando a hora no fuso horário de +11: 00.

O que eu quero fazer é dizer ao DateTime.parse para salvar a hora no fuso horário +11: 00 se o DST estiver em vigor. Claramente passando Time.zone na minha string não consegue isso. Existe uma maneira simples de fazer isso? Eu posso ver maneiras de fazer isso usando o Time # dst? mas suspeito que isso vai criar um código muito feio e complicado. Eu pensei que poderia haver uma forma construída de que estou perdendo.

questionAnswers(5)

yourAnswerToTheQuestion