Siento que la respuesta principal aún no está tan clara, y vale la pena tomarse el tiempo para comprender la hora y las zonas horarias .
¡Lo más importante que hay que entender cuando se trata de tiempo es que el tiempo es relativo !
2017-08-30 13:23:00
: (una fecha y hora ingenua), representa una hora local en algún lugar del mundo, pero tenga 2017-08-30 13:23:00
en cuenta que en Londres NO ES LA MISMA HORA que 2017-08-30 13:23:00
en San Francisco.
Debido a que la misma cadena de tiempo se puede interpretar como diferentes puntos en el tiempo dependiendo de dónde se encuentre en el mundo, existe la necesidad de una noción absoluta de tiempo.
Una marca de tiempo UTC es un número en segundos (o milisegundos) de Epoch (definido como 1 January 1970 00:00:00
en la GMT
zona horaria +00: 00 offset).
Epoch está anclado en la zona horaria GMT y, por lo tanto, es un punto absoluto en el tiempo. Por lo tanto, una marca de tiempo UTC que es un desplazamiento de un tiempo absoluto define un punto absoluto en el tiempo .
Esto hace posible ordenar eventos en el tiempo.
Sin información de la zona horaria, el tiempo es relativo y no se puede convertir en una noción absoluta de tiempo sin proporcionar alguna indicación de a qué zona horaria se debe anclar la fecha y hora ingenua.
¿Cuáles son los tipos de tiempo utilizados en el sistema informático?
fecha y hora ingenua : generalmente para mostrar, en la hora local (es decir, en el navegador) donde el sistema operativo puede proporcionar información de zona horaria al programa.
Marcas de tiempo UTC : una marca de tiempo UTC es un punto absoluto en el tiempo, como se mencionó anteriormente, pero está anclado en una zona horaria determinada, por lo que una marca de tiempo UTC se puede convertir en una fecha y hora en cualquier zona horaria, sin embargo, no contiene información de la zona horaria. Qué significa eso? Eso significa que 1504119325 corresponde a 2017-08-30T18:55:24Z
, 2017-08-30T17:55:24-0100
o también 2017-08-30T10:55:24-0800
. No le dice de dónde es la fecha y hora registrada. Por lo general, se usa en el lado del servidor para registrar eventos (registros, etc.) o se usa para convertir una fecha y hora consciente de la zona horaria en un punto absoluto en el tiempo y calcular las diferencias de tiempo .
Cadena de fecha y hora ISO-8601 : ISO-8601 es un formato estandarizado para registrar la fecha y hora con la zona horaria. (De hecho, son varios formatos, lea aquí: https://en.wikipedia.org/wiki/ISO_8601 ) Se utiliza para comunicar información de fecha y hora consciente de la zona horaria de una manera serializable entre sistemas.
¿Cuándo usar cuál? o más bien, ¿cuándo debe preocuparse por las zonas horarias?
Si necesita preocuparse por la hora del día , necesita información sobre la zona horaria. Un calendario o una alarma necesitan la hora del día para programar una reunión a la hora correcta para cualquier usuario del mundo. Si estos datos se guardan en un servidor, el servidor necesita saber a qué zona horaria corresponde la fecha y hora.
Para calcular las diferencias de tiempo entre eventos que provienen de diferentes lugares del mundo, la marca de tiempo UTC es suficiente, pero pierde la capacidad de analizar a qué hora del día ocurrieron los eventos (es decir, para análisis web, es posible que desee saber cuándo los usuarios visitan su sitio en su hora local : ¿ves más usuarios por la mañana o por la noche? No puedes averiguarlo sin la información de la hora del día.
Desplazamiento de zona horaria en una cadena de fecha :
Otro punto que es importante es que el desplazamiento de zona horaria en una cadena de fecha no es fijo . Eso significa que porque 2017-08-30T10:55:24-0800
dice la compensación -0800
o 8 horas atrás, ¡no significa que siempre lo será!
En el verano bien podría ser en horario de verano, y sería -0700
Lo que eso significa es que el desplazamiento de la zona horaria (+0100) no es lo mismo que el nombre de la zona horaria (Europa / Francia) o incluso la designación de la zona horaria (CET)
America/Los_Angeles
La zona horaria es un lugar del mundo , pero se convierte en una PST
notación de compensación de zona horaria (Hora estándar del Pacífico) en invierno, yPDT
(Hora de verano del Pacífico) en verano.
Por lo tanto, además de obtener el desplazamiento de la zona horaria de la cadena de fecha, también debe obtener el nombre de la zona horaria para que sea preciso.
La mayoría de los paquetes podrán convertir las compensaciones numéricas del horario de verano al horario estándar por sí mismas, pero eso no es necesariamente trivial con solo una compensación. Por ejemplo, la WAT
designación de zona horaria en África Occidental es UTC + 0100 al igual queCET
zona horaria en Francia, pero Francia observa el horario de verano, mientras que África occidental no (porque están cerca del ecuador)
Entonces, en resumen, es complicado. MUY complicado, y es por eso que no debe hacerlo usted mismo, sino que confíe en un paquete que lo haga por usted y ¡MANTÉNGALO ACTUALIZADO!
then.strftime('%s')
que espera la hora local pero la marca de tiempo indica quedatetime(2008, 1, 1)
está en UTC.