Seite 1 von 1

Sekunden als lesbare Zeit formatieren

Verfasst: Donnerstag 13. Dezember 2007, 14:03
von stagger
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 :)

Verfasst: Donnerstag 13. Dezember 2007, 14:07
von BlackJack
`time.localtime()` und `time.strftime()` helfen.

Verfasst: Donnerstag 13. Dezember 2007, 14:15
von stagger
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.

Verfasst: Donnerstag 13. Dezember 2007, 14:16
von Rebecca
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.

Verfasst: Donnerstag 13. Dezember 2007, 14:41
von stagger

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.

Verfasst: Donnerstag 13. Dezember 2007, 15:55
von gerold
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
:-)

Verfasst: Freitag 14. Dezember 2007, 02:27
von stagger
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 :)