Lo que te perdiste aquí son las zonas horarias.
Presumiblemente tiene cinco horas fuera de UTC, así que 2013-09-01T11: 00: 00 local y 2013-09-01T06: 00: 00Z son la misma hora.
Debe leer la parte superior de los datetime
documentos, que explican las zonas horarias y los objetos "ingenuos" y "conscientes".
Si su fecha y hora ingenua original era UTC, la forma de recuperarla es usarla en utcfromtimestamp
lugar de fromtimestamp
.
Por otro lado, si su fecha y hora ingenua original era local, no debería haberle sustraído una marca de tiempo UTC en primer lugar; utilizar datetime.fromtimestamp(0)
en su lugar.
O, si tenía un objeto de fecha y hora consciente, debe usar una época local (consciente) en ambos lados o convertirlo explícitamente desde y hacia UTC.
Si tiene, o puede actualizar a, Python 3.3 o posterior, puede evitar todos estos problemas simplemente usando el timestamp
método en lugar de tratar de descubrir cómo hacerlo usted mismo. E incluso si no lo hace, puede considerar tomar prestado su código fuente .
(Y si puede esperar a Python 3.4, parece que PEP 341 es probable que llegue a la versión final, lo que significa que todas las cosas de las que hablamos JF Sebastian y yo en los comentarios deberían ser factibles solo con stdlib, y trabajando de la misma manera en Unix y Windows).