En Rails, estoy un poco confundido sobre la orientación entre cuándo utilizar DateTime.now.utc y Time.current. Parece haber diferentes opiniones dentro del marco sobre cuál es la mejor, particularmente en diferentes versiones.¿Cuándo se debería usar `DateTime.now.utc` contra` Time.current.utc` en Rails?
Parece que DateTime.now.utc
produce una marca de tiempo con un desplazamiento de ceroGMT, mientras que Time.current.utc
produce una marca de tiempo con una zona momento de UTC. Parece una distinción sutil, pero es bastante importante en muchos casos (por ejemplo, cálculos de horario de verano).
¿Cuándo debe usar DateTime.now.utc
y cuándo debe usar Time.current.utc
? ¿Hay alguna razón para usar DateTime.now.utc
en lugar de Time.current.utc
?
¿Puede dar un ejemplo de dónde hace la diferencia? Dado que UTC no tiene ninguna transición de horario de verano, seguramente solo hace una diferencia cuando empiezas a usar otras zonas horarias ... (No conozco a Ruby, pero he hecho bastante cosas de fecha y hora, así que con más antecedentes puedo ayudar.) –
@JonSkeet: No sé si hace la diferencia. (¡Es por eso que estoy preguntando cuál debería estar usando!) 'DateTime.now.utc' primero invoca' DateTime.now', y luego invierte el desplazamiento UTC para obtener el tiempo "UTC". Así que ten en cuenta que no se traduce entre _time zones_, sino entre _offsets_. ¿Podría ser problemático en casos extremos, por ejemplo, el infame ejemplo de 1927-1928 en Shanghai? –
@JonSkeet: a menos que esté realmente en UTC, entonces 'DateTime.now' y 'Time.current' producen una hora local en algo distinto de UTC. En otras palabras, parecen diferir en sus enfoques sobre cómo se convierten a UTC; uno lo hace aplicando un desplazamiento de manera directa; el otro lo hace rehaciendo los cálculos de zona horaria en la nueva zona horaria de UTC. –