Hallo,
ich habe Strings die folgendermassen aussehen:
z.b. : 12:22.20
dh.h 12 minuten, 22 sekunden und 20 Hundertstel.
Wie kann ich diese Strings richtig addieren?
Danke,
flyingfish
Zeit Strings addieren
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Schau dich mal bei http://www.python.org/doc/current/lib/module-time.html um...
Ich würde mit strptime() die Zeit umwandeln, dann addieren und mit strftime() wieder in deinem Format bringen...
Ich würde mit strptime() die Zeit umwandeln, dann addieren und mit strftime() wieder in deinem Format bringen...
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!jens hat geschrieben:Ich würde mit strptime() die Zeit umwandeln, dann addieren und mit strftime() wieder in deinem Format bringen...
Es gibt da auch noch timedelta aus dem datetime-modul. Wobei ich aber nicht verstehe, warum man nur Microseconds, Seconds und Days zurück bekommt. Wo sind die Minuten und Stunden geblieben?
Code: Alles auswählen
import datetime
td1 = datetime.timedelta(minutes = 12, seconds = 22, milliseconds = 20)
td2 = datetime.timedelta(minutes = 10, seconds = 20, milliseconds = 30)
td3 = td1 + td2
mfg
Gerold

Zuletzt geändert von gerold am Montag 16. Januar 2006, 10:11, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Die Minuten und Stunden sind zu Sekunden geworden, bzw. teilweise zu Tagen wenn genug Sekunden für einen Tag zusammenkommen. Irgendwie muss man ja normalisieren wenn man damit weiterrechnen will. Ich nehme mal an, das war eine Entwurfsentscheidung die Zeitdifferenz so auf drei Werte zu verteilen. Nur Mikrosekunden oder Sekunden wird vielleicht zu gross zum Rechnen.gerold hat geschrieben:Es gibt da auch noch timedelta aus dem datetime-modul. Wobei ich aber nicht verstehe, warum man nur Microseconds, Seconds und Days zurück bekommt. Wo sind die Minuten und Stunden geblieben?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi BlackJack!BlackJack hat geschrieben:irgendwie muss man ja normalisieren wenn man damit weiterrechnen will.gerold hat geschrieben:Es gibt da auch noch timedelta aus dem datetime-modul. Wobei ich aber nicht verstehe, warum man nur Microseconds, Seconds und Days zurück bekommt. Wo sind die Minuten und Stunden geblieben?
Das ist es ja auch nicht, was ich nicht verstehe. Mich beschäftigt mehr, warum man keine Funktion eingebaut hat, die das Timedelta wieder zerlegt.
Jetzt muss ich nach dem Rechnen doch wieder aus den Sekunden die darin enthaltenen Stunden und Minuten herausrechen, denn meistens braucht man als Ergebnis ja so etwas wie "30 Tage, 15 Stunden, 10 Minuten, ...".
Gibt es eine Funktion, die das erledigt, oder muss ich wie gewohnt, zuerst aus den Sekunden die Stunden raus rechnen und aus dem Rest die Minuten?
Code: Alles auswählen
>>> from datetime import timedelta
>>> d1 = timedelta(hours = 20, minutes = 50)
>>> d2 = timedelta(hours = 20, minutes = 40)
>>> d3 = d1 + d2
>>> str(d1)
'20:50:00'
>>> str(d2)
'20:40:00'
>>> str(d3)
'1 day, 17:30:00'

Code: Alles auswählen
>>> sec = d3.seconds
>>> days = d3.days
>>> hours = sec // (60 * 60)
>>> minutes = (sec - (hours * 60 * 60)) // 60
>>> seconds = sec - (hours * 60 * 60) - (minutes * 60)
>>> milliseconds = d3.microseconds / 1000
lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- User
- Beiträge: 33
- Registriert: Sonntag 23. Januar 2005, 23:36
Ja Gerold, genau das war meine Frage. Ich dachte auch, dass es fuer sowas eine Funktion gibt.
Aber ich sehe, ihr löst es ähnlich wie ich.
Habe auch alles auf Sekunden/Millisekunden heruntergerechnet und dann addiert und wieder zurückgerechnet.
Gruss,
Flyingfish
Aber ich sehe, ihr löst es ähnlich wie ich.
Habe auch alles auf Sekunden/Millisekunden heruntergerechnet und dann addiert und wieder zurückgerechnet.
Gruss,
Flyingfish
-
- User
- Beiträge: 33
- Registriert: Sonntag 23. Januar 2005, 23:36
ich habe einfach divmod verwendet und so immer weitergerechnet