Sekunden als lesbare Zeit formatieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
stagger
User
Beiträge: 13
Registriert: Dienstag 20. November 2007, 16:04
Wohnort: Thailand

Donnerstag 13. Dezember 2007, 14:03

Hallo zusammen,

ich möchte einen Thread die verbleibende Zeit seiner Berechnung schätzen lassen. Dafür frage ich bei jedem Durchlauf die momentane Zeit mit time.time() ab und berechne daraus die verbleibende Zeit.

Allerdings bin ich beim Durchstöbern der lib-Referenz auf keine Funktion gestoßen, die mir die Sekunden in das Format HH:MM:SS als String konvertieren kann, und das Internet gab bisher leider auch nichts her.

Und bevor ich mir wieder was schreibe, was Python schon mitbringt, frag ich doch mal lieber nach :)
BlackJack

Donnerstag 13. Dezember 2007, 14:07

`time.localtime()` und `time.strftime()` helfen.
Benutzeravatar
stagger
User
Beiträge: 13
Registriert: Dienstag 20. November 2007, 16:04
Wohnort: Thailand

Donnerstag 13. Dezember 2007, 14:15

Aaah, an localtime bin ich wegen des Namens irgendwie vorbeigelaufen. Danke! strftime sah mir nicht sehr hilfreich aus, da es ein Tupel bzw. struct_time als Argument erwartet.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Donnerstag 13. Dezember 2007, 14:16

Wenn du mit Zeitdifferenzen umgehen willst, vielleicht auch so:.

Code: Alles auswählen

>>> d = datetime.datetime.fromtimestamp(time.time())
>>> d2 = datetime.datetime.fromtimestamp(time.time())
>>> delta = d2 - d
>>> print delta
0:00:16.904993
Mmh.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
stagger
User
Beiträge: 13
Registriert: Dienstag 20. November 2007, 16:04
Wohnort: Thailand

Donnerstag 13. Dezember 2007, 14:41

Code: Alles auswählen

t1 = time.time()
time.sleep(3)
t2 = time.time()
print time.strftime("%H:%M:%S", time.localtime(t2-t1))
gibt "07:00:03"? Woher die 7???

Rebeccas Vorschlag gibt tatsächlich 3 Sekunden aus, allerdings zu hoch aufgelöst. timedelta Objekte besitzen doch das Attribut resolution. Aber verändern kann man es nicht? Auch hier habe ich es nicht geschafft, das Ergebnis zu formatieren.

Sonst schneid ich im String einfach alles ab dem Punkt ab.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 13. Dezember 2007, 15:55

stagger hat geschrieben:

Code: Alles auswählen

print time.strftime("%H:%M:%S", time.localtime(t2-t1))
Hallo stagger!

Code: Alles auswählen

print time.strftime("%H:%M:%S", time.gmtime(t2-t1))
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
stagger
User
Beiträge: 13
Registriert: Dienstag 20. November 2007, 16:04
Wohnort: Thailand

Freitag 14. Dezember 2007, 02:27

ZEITVERSCHIEBUNG :shock:

Alles klar, dann ist das Problem jetzt vollständig gelöst. Danke!

Ich bin auch zuversichtlich, das Niveau der Fragen bald aus dem Sandkasten auf ein höheres Niveau zu heben :)
Antworten