Das erste Problem ist die Zeitzone: Eigentlich hätte ich gern das immer localtime angezeigt wird, weil man es die Zeiten manuell vergleichen kann (Also mit der Angabe in den Eigenschaften der Datei bzw. die Datei Explorer)
Ich hab ein wenig Probiert und mit eine tzinfo gebaut. Aber das ist alles nicht so einfach zu machen. Also speicher ich es doch in UTC und fertig. Zusätzlich könnte ich noch die Information mit speichern:
Code: Alles auswählen
if time.daylight != 0:
# Sommerzeit
offset=-time.altzone
else:
# keine Sommerzeit
offset=-time.timezone
offset_string = "%+dsec. (%s)" % (offset, time.tzname[1])
Jedenfalls kommt sowas raus:
(wobei das ä z.Z. noch Encoding Probleme bereitet, aber egal.)+7200sec. (Mitteleuropäische Sommerzeit)
Das nächste Problem sind die microsekunden. mtime liefert diese ja zurück.
Theoretisch kann ich beim datetime.strftime() Format String statt "%s" (Normale Sekunden) ein "%f" (Microsekunden) nehmen.
Das rückwandeln mit strptime geht aber nicht mit %f!
Ab Python 2.5 könnte man es so machen:
Code: Alles auswählen
datetime.datetime.strptime(datetime_string, DATETIME_FORMAT)
# geht nicht:
Traceback (most recent call last):
File "test.py", line 40, in <module>
dt3 = datetime.datetime.strptime(datetime_string, DATETIME_FORMAT)
File "C:\Python25\lib\_strptime.py", line 320, in strptime
(bad_directive, format))
ValueError: 'f' is a bad directive in format '%a, %d %b %Y %H:%M:%f'
Code: Alles auswählen
time.mktime(time.strptime(datetime_string, DATETIME_FORMAT))
# geht auch nicht
Traceback (most recent call last):
File "test.py", line 30, in <module>
timestamp = time.mktime(time.strptime(datetime_string, DATETIME_FORMAT))
File "C:\Python25\lib\_strptime.py", line 320, in strptime
(bad_directive, format))
ValueError: 'f' is a bad directive in format '%a, %d %b %Y %H:%M:%f'
Ein externes Zusatzmodul möchte ich nicht nehmen.
EDIT: Was mir gerade einfällt, speziell für mein kleines Skript brauche ich eigentlich keine Rückwandlung des Datetime-Strings. Ich generieren einfach nochmal den String von mtime und vergleiche die Strings.
Dennoch wäre es nett, wenn es dazu eine Lösung gibt!