Rieles: cómo analizar la cadena de fecha y hora en una zona horaria específica

Estoy usando Rails 3.2 y ruby ​​1.9.3 en Debian. Tengo una aplicación que recopila una fecha, hora y zona horaria en forma de cadenas a través de un formulario HTML. Algo como esto:

<code>start_date: "04-15-2010",
start_time: "10:00:00",
timezone: "Central Time (US & Canada)"
</code>

Lo que me gustaría hacer es analizar estos 3 elementos en una sola fecha que se guarda en mi base de datos como UTC, que en este caso agregaría 7 horas a la hora de inicio, una vez que esté en la zona horaria UTC. Por lo tanto, la hora almacenada sería 17:00 una vez que esté en el DB como UTC en lugar de la hora central recibida.

He intentado algo como esto para analizar la fecha:

<code>ActiveSupport::TimeZone[timezone].at DateTime.strptime("{ 2012-04-09 20:00:00 }", "{ %Y-%m-%d %H:%M:%S }").to_i
</code>

Sin embargo, no puedo incorporar la zona horaria en el tiempo resultante con% Z. O bien no se analiza o la hora se interpreta como UTC, no como hora central. Así que mi pregunta es, cómo forzar una cadena de fecha en una determinada zona horaria sin cambiar el valor de la fecha / hora real almacenada. Me gustaría poder analizar la cadena en un objeto de fecha / hora que incluya la zona horaria correcta con ellaEn ese tiempo para que las futuras conversiones de zona horaria sean precisas. He mirado por todas partes y no puedo encontrar una manera de hacer esto. Es extraño, ya que parece que algo común se hace con las fechas ingresadas desde formularios HTML. Gracias por cualquier ayuda.

Respuestas a la pregunta(7)

Su respuesta a la pregunta