timediff next hour

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
taake
User
Beiträge: 125
Registriert: Donnerstag 14. Oktober 2010, 08:49

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.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

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?
taake
User
Beiträge: 125
Registriert: Donnerstag 14. Oktober 2010, 08:49

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.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
taake
User
Beiträge: 125
Registriert: Donnerstag 14. Oktober 2010, 08:49

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.
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.
taake
User
Beiträge: 125
Registriert: Donnerstag 14. Oktober 2010, 08:49

@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?
taake
User
Beiträge: 125
Registriert: Donnerstag 14. Oktober 2010, 08:49

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()
Antworten