ruby on rails - rails - Obtiene Time Object al inicio del día en una zona horaria particular
rails where date between (3)
¿Cómo puedo obtener un objeto Time ruby que representa el inicio del día en una fecha determinada en una zona horaria determinada?
date = Date.today
date.to_time.in_time_zone(''America/New_York'').beginning_of_day
Actualmente salidas => 2011-11-02 00:00:00 -0400
Time.now.in_time_zone(''Asia/Shanghai'').beginning_of_day
Actualmente salidas => 2011-11-03 00:00:00 +0800
date = Date.today
date.to_time.in_time_zone(''Asia/Shanghai'').beginning_of_day
Actualmente salidas => 2011-11-02 00:00:00 +0800
Terminé usando el método #local
en el objeto ActiveSupport::TimeZone
que pasa los componentes del objeto Date
.
# Get example date and time zone...
date = Date.today
timezone = ActiveSupport::TimeZone[''America/New_York'']
# Get beginning of day for date in timezone
timezone.local(date.year, date.month, date.day)
No estoy seguro de si esto ayuda, pero esto me da el tiempo en el que se restablecen las cuotas de mi API de Google:
# The most recent midnight in California in UTC time
def last_california_midnight
(Time.now.utc - 7.hours).midnight + 7.hours
end
Lo uso así con Mongoid, por ejemplo:
def api_calls_today
Call.where(updated_at: { ''$gte'' => last_california_midnight }).count
end
Esto funcionará sin importar en qué zona horaria esté desplegado el código, siempre que Mongo esté configurado como UTC.