Servus,
ich habe mich in letzter Zeit etwas mehr mit dem datetime modul befasst.
Mir stellt sich aber noch eine Frage zur Benutzung in Programmen.
Nehme man an man hat ein Programm, dass täglich zu verschiedenen Zeiten
die Uhrzeit protokolliert, die Differenz zwischen den einzelnen Zeitmessungen
berechnet und zu den Differenzen noch irgendwelche Zeiträume hinzurechnen muss.
Wie würde man aufgrund der vielen Verwendungszwecke diese "Zeiten" intern im
Programm verwenden.
Ist es bei solchen Vorgängen sinnvoll immer wieder datetime.date, oder datetime.time
Objekte zu erstellen, oder diese intern mit timedeltas zu belegen und dann erst bei der
Ausgabe in datetime.date/time objekte umzuwandeln?
Die Frage ist aufgetaucht, da mir bei Versuchen mit IDLE aufgefallen ist, dass es doch
etwas umständlich ist immer zwischen den einzelnen Zeiten hin und her zu konvertieren
um eine Addition, oder Subtraktion durch zu führen.
Liebe Grüße
Sinnvoller Vorgang beim Rechnen mit Uhrzeiten
-
- User
- Beiträge: 89
- Registriert: Mittwoch 15. Januar 2014, 22:30
- Wohnort: Bad Kötzting
- Kontaktdaten:
-
- User
- Beiträge: 89
- Registriert: Mittwoch 15. Januar 2014, 22:30
- Wohnort: Bad Kötzting
- Kontaktdaten:
Ich dachte da mehr an etwas wie ein ungeschriebenes Gesetz
- __blackjack__
- User
- Beiträge: 13115
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Hartmannsgruber: Ich verstehe nicht wo da immer hin und her konvertiert werden soll/muss‽ Wenn man die aktuelle Uhrzeit erstellt um sie zu protokollieren, bekommt man ein `datetime`-Objekt. Und damit rechnet man dann auch, denn das geht mit Zeichenketten ja nicht. Die braucht man nur für die Ausgabe.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 89
- Registriert: Mittwoch 15. Januar 2014, 22:30
- Wohnort: Bad Kötzting
- Kontaktdaten:
Vielen Dank für eure Antworten.
Ich habe mir eine Übersicht gebastelt.
Dadurch wird der Umgang mit den einzelnen Zeit und Datumstypen selbsterklärend.
time() + time() = error
time() + date() = error
time() + datetime() = error
time() + timedelta() = error
time() - time() = error
time() - date() = error
time() - datetime() = error
time() - timedelta() = error
---------------------------------
date() + time() = error
date() + date() = error
date() + datetime() = error
date() + timedelta = datetime.date()
date() - time() = error
date() - date() = datetime.timedelta()
date() - datetime = error
date() - timedelta = datetime.date()
--------------------------------
datetime() + time() = error
datetime() + date() = error
datetime() + datetime() = error
datetime() + timedelta() = datetime.datetime()
datetime() - time() = error
datetime() - date() = error
datetime() - datetime() = datetime.timedelta()
datetime() - timedelta() = datetime.datetime()
------------------------------
timedelta() + time() = error
timedelta() + date() = datetime.date()
timedelta() + datetime() = datetime.datetime()
timedelta() + timedelta() = datetime.timedelta()
timedelta() - time() = error
timedelta() - date() = error
timedelta() - datetime() = error
timedelta() - timedelta() = datetime.timedelta()
Ich habe mir eine Übersicht gebastelt.
Dadurch wird der Umgang mit den einzelnen Zeit und Datumstypen selbsterklärend.
time() + time() = error
time() + date() = error
time() + datetime() = error
time() + timedelta() = error
time() - time() = error
time() - date() = error
time() - datetime() = error
time() - timedelta() = error
---------------------------------
date() + time() = error
date() + date() = error
date() + datetime() = error
date() + timedelta = datetime.date()
date() - time() = error
date() - date() = datetime.timedelta()
date() - datetime = error
date() - timedelta = datetime.date()
--------------------------------
datetime() + time() = error
datetime() + date() = error
datetime() + datetime() = error
datetime() + timedelta() = datetime.datetime()
datetime() - time() = error
datetime() - date() = error
datetime() - datetime() = datetime.timedelta()
datetime() - timedelta() = datetime.datetime()
------------------------------
timedelta() + time() = error
timedelta() + date() = datetime.date()
timedelta() + datetime() = datetime.datetime()
timedelta() + timedelta() = datetime.timedelta()
timedelta() - time() = error
timedelta() - date() = error
timedelta() - datetime() = error
timedelta() - timedelta() = datetime.timedelta()
Vielleicht kann man als Randbemerkung dazu noch sagen, dass der Umgang mit Zeit- und Datumsangaben mit den Mitteln der Standardbibliothek auch nicht ganz kritik-frei ist. Auch deswegen gibt es eine größere Anzahl an Drittmodulen, die versuchen, das einheitlicher, strukturierter, etc. zu machen (z. B. arrow, dateutil, pendulum, …). Wenn man eine Anwendung hat, in der recht viel mit Zeit- und Datumsangaben gearbeitet wird, man konvertieren, parsen, vielleicht zwischen Zeitzonen umrechnen muss usw. kann es sich daher lohnen, sich eines der anderen Module anzusehen. Für die meisten Skripte, in denen man nur mal ein Datum braucht, ist es vmtl. aber doch einfacher, mit dem Standardmodulen zu arbeiten und sich von dem leichten Chaos, das da meiner Meinung nach herrscht, nicht abschrecken zu lassen.
- DeaD_EyE
- User
- Beiträge: 1021
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Seit Python 3.9 gibt es das Modul zoneinfo, welches auf die Zeitzonendaten des Betriebssystems zugreifen kann.
Unter Windows muss man noch das first party package tzdata installieren.
Wenn man die Zeitzone weglässt, hat man ein naive datetime object, welches keine Zeitzone und auch keinen offset beinhaltet.
Solange man nicht die Zeitzone hin- und herwechselt, kann man ohne Zeitzone arbeiten.
Probleme gibt es dann erst bei der Normalzeit/Sommerzeit-Umstellung.
Unter Windows muss man noch das first party package tzdata installieren.
Wenn man die Zeitzone weglässt, hat man ein naive datetime object, welches keine Zeitzone und auch keinen offset beinhaltet.
Solange man nicht die Zeitzone hin- und herwechselt, kann man ohne Zeitzone arbeiten.
Probleme gibt es dann erst bei der Normalzeit/Sommerzeit-Umstellung.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server