Python vs Javascript DateTime

Estoy intentando convertir una llamada de API de Javascript a Python. El código de JavaScript funciona bien, generando una timestamp como esta:

var curdate = new Date(); var gmtstring = curdate.toGMTString(); var utc = Date.parse(gmtstring) / 1000; 

Este resultado (este número de segundos desde la época) es posteriormente hash y utilizado en la llamada API, pero esta es la sección relevante. Si alguien puede decirme la forma correcta de convertir esto, sería muy apreciado.

Aquí hay algunos detalles sobre los diferentes resultados de los diferentes methods:

Javascript (resultado de la API válida)

 var curdate = new Date(2013, 7, 10); var gmtstring = curdate.toGMTString(); var utc = Date.parse(gmtstring) / 1000; 

Resultado: 1376089200

Python (Resultado API no válido)

 from datetime import datetime import calendar d = datetime(2013, 8, 10) calendar.timegm(d.utctimetuple()) 

Resultado: 1376092800

Claramente me falta algo, ¿alguien puede iluminarme sobre esto?

Actualizar

Originalmente cometí un error en mis ejemplos, ya que Javascript usa dates basadas en 0 y las dates de Python están basadas en 1.

Jonathon amablemente explicó que la diferencia en los valores es diferente debido a que Python se está configurando de manera pnetworkingeterminada en UTC, ya que Javascript está pnetworkingeterminado en la zona horaria local. En mi caso, esto es GMT, que es el requerido por la API. Ahora solo necesito get este resultado en Python.

Responder

La solución fue un desajuste de las zonas horarias que se proporcionan. Aunque todavía tengo problemas con la API de terceros, al less ahora estoy obteniendo los times correctos.

Esto probablemente se pueda limpiar:

 from datetime import datetime import calendar import time import pytz def GenerateTimeStamp(d): europe = pytz.timezone('Europe/London') d = europe.localize(d) tuple = d.utctimetuple() timestamp = int(time.mktime(tuple)) return timestamp 

Solo proporcione una date y hora:

 GenerateTimeStamp(datetime(2013, 8, 10)) 

o

 GenerateTimeStamp(datetime.utcnow()) 

Como nota al margen, si estás probando esto y quieres instalar pytz 1 usando pip, puedes getlo usando la label previa 2 :

 pip install --pre pytz 

3 Solutions collect form web for “Python vs Javascript DateTime”

Para dates de JavaScript, el argumento del month es 0 – 11 . Entonces, para agosto, querrás pasar 7 .

Valor integer que representa el mes, comenzando con 0 de enero a 11 de diciembre.

También tienen diferentes zonas horarias pnetworkingeterminadas, con Python pnetworkingeterminado a UTC, mientras que JavaScript se pnetworkingetermina a la zona horaria " local " del usuario.

Puede usar Date.UTC() , que devuelve la timestamp, para el equivalente en JavaScript.

 var utc = Date.UTC(2013, 7, 10) / 1000; // 1376092800 

Nota al margen: puede usar getTime() para get la timestamp de una Date .

 var curdate = new Date(2013, 7, 10); var utc = curdate.getTime() / 1000; 

new Date(2013, 8, 10) en javascript significa 10 de septiembre de 2013.

datetime(2013, 8, 10) en Python significa 10 de agosto de 2013.

Estás comparando dos dates diferentes.

Hora local frente a UTC

Los resultados pueden ser diferentes. (zona horaria para mi sistema: Asisa / Seoul)

javascript

 > new Date(2013, 7, 10) / 1000 1376060400 > Date.UTC(2013, 7, 10) / 1000 1376092800 

Pitón

 >>> import calendar >>> import datetime >>> import time >>> time.mktime(datetime.datetime(2013, 8, 10).timetuple()) 1376060400.0 >>> calendar.timegm(datetime.datetime(2013, 8, 10).timetuple()) 1376092800 

Ver Python – calendar.timegm () vs. time.mktime ()

Además de la respuesta de Jonathan anterior, podría recomendar esto en el lado de Python:

  d = datetime(2013, 8, 10) d.strftime("%s") 

Eso volverá: '1376107200'

  • jquery datepicker getTime no UTC
  • Convertir UTC Epoch en una date local
  • ¿Cómo especifico el huso horario al crear una date de JavaScript?
  • ¿Cómo funciona correctamente con Timezone?
  • Javascript: Obteniendo la date actual en milisegundos (UTC) (SIN uso de cadenas)
  • ¿Cuál es la necesidad de la function de javascript getUTCFullYear ()?
  • ¿La cadena de date UTC requiere el especificador de formatting "Z" incluso si esa cadena incluye el desplazamiento de time?
  • ¿Qué hacen los methods getUTC * en el object de date?
  • El time de Python Unix no funciona en Javascript
  • Javascript: convierte un object UTC Date () a la zona horaria local
  • XML DateTime to Javascript Date Object
  • JSON Stringify cambia la hora de la date debido a UTC
  • Trabajar con zonas horarias y horario de verano en Javascript
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.