with rails ruby-on-rails ruby time date activesupport

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.