Seite 1 von 1
time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 15:34
von osd11
Hallo,
ich möchte gern ein timedelta, welche von einigen sekunden bis viele Tage reichen kann in Sekunden umrechnen.
Folgendes habe ich bisher gemacht:
Code: Alles auswählen
import datetime
if not os.path.isfile(statefile):
return False
# Calculate the delta from now - statefile mtime
now = datetime.datetime.now()
mtime = datetime.datetime.fromtimestamp(os.path.getmtime(statefile))
delta = now - mtime
print delta.seconds
Leider werden so nicht die gesamten Sekunden errechnet, speziell wenn das delta > 24 Stunden ist.
was mache ich falsch?
thx
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 15:37
von EyDu
Hallo und willkommen im Forum!
Das "delta" hat eine Methode "total_seconds", damit bekommst du die vergangenen Sekunden. Die Sekunden des "seconds"-Attribut geben nur die Sekunden an, welche nicht in Minuten dargestellt werden konnten.
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 15:41
von /me
osd11 hat geschrieben:was mache ich falsch?
Die kompletten Sekunden musst du anhand der
days und
seconds der timedelta-Instanz selber ausrechnen. Ab Python 3.2 gibt es das mit
timedelta.total_seconds() auch schon eingebaut.
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 15:46
von EyDu
Das gibt es auch als Backport ab 2.7.
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 15:46
von osd11
man Ihr seit aber flink
Ich habe vergessen die Python Version anzugeben, Debian Wheezy, also 2.7.3
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 15:52
von osd11
osd11 hat geschrieben:man Ihr seit aber flink
Ich habe vergessen die Python Version anzugeben, Debian Wheezy, also 2.7.3
Und wie rechne ich Tage in Sekunden um?
Hab das bisher so versucht:
Code: Alles auswählen
hours = delta.days * 24
minutes = hours * 60
seconds = minutes * 60
return delta.seconds + seconds
Geht doch sicherlich eleganter, oder?

Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 16:03
von mutetella
@osd11
Wieviele Sekunden hat eine Minute? Wieviele Minuten hat eine Stunde? Wieviele Stunden hat ein Tag?
mutetella
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 16:06
von EyDu
Und dann kommt ein Schalttag dazwischen

Benutze einfach die total_seconds-Methode, dann musst du dich um nichts mehr kümmern.
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 16:10
von osd11
Bin leider an Python 2.7 gebunden...
Will auf den Maschinen auch nicht extra ein Backport installieren.
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 16:14
von EyDu
Du musst nichts extra installieren, die Methode ist in jedem Python ab 2.7 enthalten. Das ist ein Backport für das Modul von 3.2 auf 2.7, das hat nichts mit der Paketverwaltung deines Betriebssystems zu tun.
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 16:17
von osd11
ok, aber folgende Fehlermeldung:
<built-in method total_seconds of datetime.timedelta object at 0xb74f40b0>
Beim Aufruf von
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 16:21
von Sirius3
@osd11: das ist keine Fehlermeldung, sondern die Ausgabe, wenn Du eine Methode ausgibst, anstatt sie aufzurufen und das Ergebnis auszugeben.
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 16:25
von mutetella
@osd11
Das ist keine Fehlermeldung, sondern die sichtbare (druckbare) Repräsentation der ``total_seconds`` Methode. Du musst eine Methode natürlich aufrufen, nicht nur "anschauen"...
mutetella
Re: time delta Berechnung
Verfasst: Dienstag 6. Januar 2015, 16:31
von osd11
thx für die vielen Hinweise!!!
Das wars
