Seite 1 von 1

timediff next hour

Verfasst: Freitag 14. Dezember 2012, 11:11
von taake
Moin,

ich hab gerade ein kleines Problem und bin mir nicht sicher wie ich es am Besten lösen soll.
Und zwar möchte ich eine Funktion genau einmal in der Stunde ausführen, jeweils am Beginn einer neuen Stunde.

Meine Idee war jetzt, zu schauen wieviele sekunden noch bis zur nächsten vollen Stunde vergehen und das der funktion als sleep zu geben.
Ist das Sinnvoll, oder gibts da was besseres?

Mein zweites Problem, ich hab leider keine Idee wie ich rausbekomme wieviel Zeit es noch bis zur nächsten Stunde sind :(

Hoffe ihr könnt mir helfen.

Schonmal danke im Vorraus.

Re: timediff next hour

Verfasst: Freitag 14. Dezember 2012, 11:30
von JonasR
Schau dir mal threading.Timer an. Vielleicht ist es das was du suchst ;)

Btw wieso muss es zu einem genauen Zeitpunkt passieren? Reicht nicht einfach 3600 Sekunden warten?

Re: timediff next hour

Verfasst: Freitag 14. Dezember 2012, 11:47
von taake
Danke, aber das ist nicht das was ich suche.
Ich möchte Messpunkte erfassen und das zu jeder vollen Stunde.
3600 sec wären ja einmal in der Stunde abhängt von der Startzeit des Scripts.

Bräuchte also ne funktion die mir die sekunden bis zur nächsten vollen stunde sagt und da haperts leider bei der umsetzung, da ich nicht weiß wie ich das hinbekomme.

Würde auch nichts bringen das script 1x pro stunde via cron auszuführen, da das script aus mehreren threads besteht die in dieser stunde noch andere arbeiten verrichten.

Re: timediff next hour

Verfasst: Freitag 14. Dezember 2012, 11:53
von EyDu
taake hat geschrieben:Bräuchte also ne funktion die mir die sekunden bis zur nächsten vollen stunde sagt und da haperts leider bei der umsetzung, da ich nicht weiß wie ich das hinbekomme.
Es gibt das datetime-, das time- und das timedelta-Modul.

Re: timediff next hour

Verfasst: Freitag 14. Dezember 2012, 12:19
von taake
Danke die kenne ich
Ich muss nur irgendwie eines dazu bringen mir immer die nächste stunde zu gebe und dann mit timedelta die diff zum jetzigen zeitpunkt auszurechnen.
Aber genau an dem Punkt die jeweils nächste Stunde zu bekommen scheiterts, weiß nicht genau wie ich das bewerkstelligen soll.

Re: timediff next hour

Verfasst: Freitag 14. Dezember 2012, 12:32
von BlackJack
@taake: Du lässt Dir die Zeit *jetzt* geben, addierst da eine Stunde drauf, ersetzt die Minuten, Sekunden, usw. durch 0, und ziehst davon die aktuelle Zeit vom Anfang ab. Dabei kann es einen Sonderfall geben, über den man eventuell nachdenken muss.

Re: timediff next hour

Verfasst: Freitag 14. Dezember 2012, 12:45
von taake
@BlackJack: Vielen Dank!

Komm mir jetzt zwar etwas blöd vor das ich da so nicht selbst drauf gekommen bin aber hey, ich bin alt :)

Mit dem Sonderfall meinst du die Zeitumstellung oder?

Re: timediff next hour

Verfasst: Freitag 14. Dezember 2012, 14:24
von taake
Wunderbar, es klappt.

Nochmals vielen Dank

Code: Alles auswählen

def time_to_next_hour():
        now = datetime.datetime.now().replace(microsecond=0)
        plus1 = now + datetime.timedelta(hours=1)
        time_clear = plus1.replace(minute=0,second=0,microsecond=0)
        time_to_hour = time_clear - now
        return time_to_hour.total_seconds()