Llamar Date.today
en Ruby devuelve la fecha actual. Sin embargo, ¿en qué zona horaria está? Supongo UTC, pero quiero asegurarme. El documentation no indica de ninguna manera.¿Fecha.today en UTC?
Respuesta
Las fechas no tienen zonas horarias, ya que no representan una hora.
Dicho esto, como para cómo se calcula el día de hoy, vamos a ver este extracto de the code for Date.today
:
time_t t;
struct tm tm;
// ...
if (time(&t) == -1)
rb_sys_fail("time");
if (!localtime_r(&t, &tm))
rb_sys_fail("localtime");
Seguidamente se procede a utilizar el uso tm
para crear el objeto Date
. Como tm
contiene la hora local del sistema usando localtime()
, Date.today
, por lo tanto, utiliza la hora local del sistema, no UTC.
Siempre se puede usar en cualquier Time#utc
Time
convertirlo en el lugar a UTC, o Time#getutc
para devolver un nuevo objeto Time
equivalente en UTC. A continuación, puede llamar al Time#to_date
para obtener un Date
. Entonces: some_time.getutc.to_date
.
Si está utilizando ActiveSupport’s time zone support (incluido con rieles), tenga en cuenta que es completamente independiente de los constructores de tiempo de Ruby y no afecta a ellos (es decir, no cambia la forma en Time.now
o Date.today
trabajo). Vea también ActiveSupport extensions to Time
.
Una instancia de fecha se representa como un número astronómico de día juliano; no tiene parte fraccional de un día. Si bien un día juliano es relativo a GMT, por lo que técnicamente una instancia de fecha se debe considerar en GMT, para la mayoría de los propósitos puede ignorar eso y considerar que no tiene zona horaria. Solo le interesaría un huso horario si lo convirtió a DateTime o Time.
Las herramientas de ActiveSupport para la conversión de fechas le permiten especificar si desea la hora local o UTC.
Ej:
>> t = Date.today.to_time
=> Wed Apr 18 00:00:00 -0400 2012
>> t.zone
=> "EDT"
>> t = Date.today.to_time(:utc)
=> Wed Apr 18 00:00:00 UTC 2012
>> t.zone
=> "UTC"
Vea el comentario que hice sobre la respuesta de @ AndrewMarshall con respecto a por qué hice la pregunta original. Básicamente, estoy tratando de averiguar si Date.today en el sistema local sería lo mismo que Date.today en un sistema en UTC. –
Como dice Andrew, Date.today genera una fecha a partir de la hora local, no UTC. Para obtener la fecha correspondiente a la hora en UTC, intente Time.now.utc.to_date –
Simplemente señalaría que, si bien para algunos países, ignorar la zona horaria de una fecha podría funcionar, aquí en Nueva Zelanda se obtiene la fecha incorrecta para la mayor parte del día laboral si haces eso. (Por ejemplo, 10 am local el 13 de febrero es, creo, a las 2100 UTC del día 12). – Rich
Usted puede conseguir lejos con
Time.now.utc.to_date
en rubí
Mucho mejor que la respuesta aceptada. Me pregunto si esto se agregó desde abril de 2012. –
esta es información útil, pero no responde la pregunta. Esto responde a la pregunta relacionada "¿cómo puedo obtener la fecha de la hora UTC actual?", el cartel preguntaba si Date.today estaba en UTC o no, no cómo obtener la fecha en utc. –
Si las aplicaciones de carriles está configurado para ejecutarse en el huso horario UTC continuación, sólo tiene que utilizar Time.zone.today
, de lo contrario forzarlo usando Time.now.utc.to_date
Puede utilizar
Date.current
Para obtener la fecha actual en la zona horaria configurada.
- 1. Compensación UTC en PHP
- 2. Desplazamiento UTC en minutos
- 3. Generando hora UTC en java
- 4. obtener hora UTC en PHP
- 5. Convertir DateTime a UTC sólo si no está ya Utc
- 6. Convertir a UTC Timestamp
- 7. date_default_timezone_set ('UTC') no funciona
- 8. iPhone CurrentTimeZoneOffset de UTC
- 9. conversión de pytz utc
- 10. ¿Cómo convierto DateTime.now a UTC en Ruby?
- 11. Convertir hora local a UTC en Rails
- 12. MySql - SELECCIONAR columna TimeStamp en formato UTC
- 13. Almacenamiento Doctrine2 DateTime en UTC Sólo
- 14. Convertir la fecha UTC en milisegundos
- 15. Solr no ahorra tiempo en formato UTC
- 16. Java ResultSet cómo getTimestamp en UTC
- 17. GMT contra las fechas UTC
- 18. MVC - UTC date to LocalTime
- 19. intervalo de tiempo y UTC
- 20. SensorEvent.timestamp a absolute (utc) timestamp?
- 21. Log4Net: Log con tiempos UTC
- 22. ¿System.currentTimeMillis representa la hora UTC?
- 23. Cómo obtener el desplazamiento UTC en segundos en Android
- 24. convertir hora utc y desplazamiento a DateTime
- 25. C# convert UTC int al objeto DateTime
- 26. Javascript Convertir Hasta la fecha UTC
- 27. Moment.js diff entre las fechas UTC
- 28. Cache.Add expiración absoluta - ¿UTC basado o no?
- 29. Visualización de zonas horarias sin utilizar UTC
- 30. Convertir hora UTC/GMT a hora local
Gracias por la aclaración. Supongo que una mejor manera de hacer mi pregunta habría sido "¿en relación con qué zona horaria devuelve Date.today al día siguiente?" Supongo que si quiero "la fecha de hoy en UTC", tendré que hacer algo como 'Time.now.zone.to_date' (en Rails). –
'Time.zone.now.to_date' usará cualquier zona horaria en la que esté configurada la aplicación. Vale la pena mirar 'Time.use_zone ('[zone name]')' en caso de que desee establecer la zona horaria para un bloque específico de código, en este caso a UTC. –
Sí, con la gestión de zona horaria de ActiveSupport, puede hacer 'Time.zone.now.to_date' que es igual a' Time.current.to_date' que es igual a 'Date.current'. –