Convertir el objeto Date en TimeWithZone

Necesito convertir un objeto Date en un objeto TimeWithZone que represente el comienzo de ese día en una zona horaria determinada.

El siguiente enfoque funciona, pero parece demasiado complicado ya que requiere que convierta la fecha en una cadena:

?> date = Date.parse("2010-02-17")
=> Wed, 17 Feb 2010
>> ActiveSupport::TimeZone['Eastern Time (US & Canada)'].parse(date.to_s)
=> Wed, 17 Feb 2010 00:00:00 EST -05:00
>> ActiveSupport::TimeZone['UTC'].parse(date.to_s)
=> Wed, 17 Feb 2010 00:00:00 UTC 00:00

¿Hay una mejor manera que me estoy perdiendo?

Editar: La gente sugiere variaciones de:

?> date.to_datetime.in_time_zone('Eastern Time (US & Canada)').beginning_of_day
=> Tue, 16 Feb 2010 00:00:00 EST -05:00

Como puede ver, esta no es una conversión equivalente, ya que me deja al comienzo del 16 de febrero EST, en lugar del inicio del 17 de febrero EST.

Respuestas a la pregunta(5)

Su respuesta a la pregunta