Quello che ti sei perso qui sono i fusi orari.
Presumibilmente hai cinque ore di pausa UTC, quindi 2013-09-01T11: 00: 00 locali e 2013-09-01T06: 00: 00Z sono alla stessa ora.
Devi leggere la parte superiore dei datetime
documenti, che spiegano i fusi orari e gli oggetti "ingenui" e "consapevoli".
Se il tuo datetime ingenuo originale era UTC, il modo per recuperarlo è utilizzare utcfromtimestamp
invece di fromtimestamp
.
D'altra parte, se il tuo datetime ingenuo originale era locale, non avresti dovuto sottrarre un timestamp UTC da esso in primo luogo; usa datetime.fromtimestamp(0)
invece.
In alternativa, se si disponeva di un oggetto datetime consapevole, è necessario utilizzare un'epoca locale (consapevole) su entrambi i lati o convertire esplicitamente da e verso UTC.
Se hai, o riesci ad aggiornare a, Python 3.3 o versioni successive, puoi evitare tutti questi problemi semplicemente usando il timestamp
metodo invece di cercare di capire come farlo da solo. E anche se non lo fai, ti consigliamo di prendere in prestito il suo codice sorgente .
(E se puoi aspettare Python 3.4, sembra che PEP 341 sia probabilmente arrivato alla versione finale, il che significa che tutte le cose di cui JF Sebastian e io stavamo parlando nei commenti dovrebbero essere fattibili solo con lo stdlib, e lavorando allo stesso modo su Unix e Windows.)