¿Cómo puedo obtener un objeto de hora de rubí que representa el inicio del día en una fecha determinada en una zona horaria determinada?Obtiene Objeto de tiempo al inicio del día en una zona horaria particular
Respuesta
terminé usando el método #local
en el ActiveSupport::TimeZone
objeto p Asignar 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)
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
salidas Actualmente => 2011-11-03 00:00:00 +0800
date = Date.today
date.to_time.in_time_zone('Asia/Shanghai').beginning_of_day
salidas Actualmente => 2011-11-02 00:00:00 +0800
Ojalá fuera así de simple. Lamentablemente, no hay garantía de que la hora a la que llegue, después de la conversión de zona horaria, sea en el mismo día. Algunas veces será y algunas veces no dependerá de la zona de inicio y finalización. Supongo que podría comparar el componente de fecha después de la conversión con el valor original y ajustarlo si fuera necesario, pero eso es realmente torpe. Lo que espero es una forma elegante de hacerlo que siempre funcione. Esperemos que haya algo en la API, no creo que sea una locura querer hacer. –
Es posible que no entienda completamente lo que intenta hacer, pero 'date.to_time.in_time_zone ('TIMEZONE'). Beginning_of_day' le da 00:00:00 UTC para la fecha especificada original. –
No te da 0 UTC, te da 0 en la zona horaria, lo cual es preferible. Pero no hace esto antes de convertir zonas horarias con in_time_zone, por lo que la fecha ya no es necesariamente válida. Aquí hay un ejemplo de lo que quiero decir. 'date.to_time.in_time_zone ('Asia/Shanghai'). midnight.in_time_zone (Time.zone) .midnight # => Un día en el pasado. Idealmente, Ruby debería permitirme hacer algo como esto. 'date.to_time (zone)'. –
No estoy seguro si esto ayuda, pero esto me pone el tiempo en que mis cuotas de la API de Google restablecen:
# The most recent midnight in California in UTC time
def last_california_midnight
(Time.now.utc - 7.hours).midnight + 7.hours
end
lo uso como este con Mongoid, por ejemplo:
def api_calls_today
Call.where(updated_at: { '$gte' => last_california_midnight }).count
end
Esto funcionará independientemente de la zona horaria en la que se implemente el código, siempre que Mongo esté configurado como UTC.
- 1. Cómo convertir el tiempo de fecha de una zona horaria a otra zona horaria
- 2. cómo encontrar el tiempo en una zona horaria particular desde cualquier lugar
- 3. Cómo ignorar la zona horaria del usuario y forzar la fecha() utiliza la zona horaria específica
- 4. zona horaria local del dispositivo
- 5. Rieles: obtenga #beginning_of_day en la zona horaria
- 6. Posición del GPS en la zona horaria
- 7. java incorrecta zona horaria
- 8. Obtener el número de días entre dos fechas de NSDate en una zona horaria particular
- 9. Tiempo de conversión WCF basado en la zona horaria automáticamente
- 10. Python Zona horaria conversión
- 11. postgres zona horaria predeterminada
- 12. Desfase de zona horaria local en PostgreSQL
- 13. Cambiar zona horaria en Tomcat
- 14. NSDatePicker rareza de zona horaria
- 15. Obtener zona horaria a partir de DateTime
- 16. Fechas sin tiempo o componente de zona horaria en Java/MySQL
- 17. zona horaria por Coordinar
- 18. Java GregorianCalendar Zona horaria
- 19. ¿Cómo obtener la zona horaria del cliente?
- 20. ruby get Tiempo en la zona horaria dada
- 21. Cambiar la zona horaria sin cambiar el tiempo en Java
- 22. Configuración zona horaria en Python
- 23. NSDate no devuelve mi zona horaria local/zona horaria predeterminada del dispositivo
- 24. cómo detectar la zona horaria del cliente?
- 25. Django: problema de zona horaria
- 26. ¿Por qué Java devuelve una fecha en GMT-4.5 al elegir la zona horaria del tiempo universal coordinado en Windows?
- 27. zona horaria local en Ruby
- 28. ajustar la zona horaria
- 29. obtener usuario zona horaria
- 30. ponerse en php - zona horaria emite
Solo un comentario ya que no sé nada sobre el manejo de la zona horaria de Ruby: la medianoche no siempre existe, y puede ocurrir dos veces. Brasil cambia sus relojes a medianoche, por ejemplo. Probablemente deberías encontrar el comienzo del día, en cambio. –
Punto de interés. Para mi propósito, el comienzo del día es lo que me interesa. Gracias, Jon. Actualizaré la pregunta. –
¿Cuál es su caso de uso real? (Encontré esta pregunta porque quería obtener la medianoche más reciente en California, como UTC, para el seguimiento de cuotas API). –