To, co przegapiłeś, to strefy czasowe.
Prawdopodobnie masz pięć godzin poza czasem UTC, więc 2013-09-01T11: 00: 00 lokalna i 2013-09-01T06: 00: 00Z to ten sam czas.
Musisz przeczytać górną część datetime
dokumentacji, która wyjaśnia o strefach czasowych oraz obiektach „naiwnych” i „świadomych”.
Jeśli pierwotną naiwną datą i godziną był UTC, sposobem na jej odzyskanie jest użycie utcfromtimestamp
zamiast fromtimestamp
.
Z drugiej strony, jeśli pierwotna naiwna data i godzina była lokalna, nie powinieneś odejmować od niej znacznika czasu UTC; użyj datetime.fromtimestamp(0)
zamiast tego.
Lub, jeśli masz świadomy obiekt daty i godziny, musisz albo użyć lokalnej (świadomej) epoki po obu stronach, albo jawnie przekonwertować na iz UTC.
Jeśli masz lub możesz zaktualizować Python 3.3 lub nowszy, możesz uniknąć wszystkich tych problemów, używając po prostu tej timestamp
metody, zamiast próbować samodzielnie wymyślić, jak to zrobić. A nawet jeśli tego nie zrobisz, możesz rozważyć wypożyczenie jego kodu źródłowego .
(A jeśli możesz poczekać na Pythona 3.4, wygląda na to, że PEP 341 prawdopodobnie trafi do ostatecznej wersji, co oznacza, że wszystkie rzeczy, o których JF Sebastian i ja rozmawialiśmy w komentarzach, powinny być możliwe do wykonania za pomocą tylko standardowej biblioteki, a działa w ten sam sposób w systemach Unix i Windows.)