Ich habe ein Stück Python Code, der um 22:00 Uhr eine Funktion aufruft.python3 datetime.timestamp in python2?
# Imports
from datetime import datetime, date, time, timedelta
import sched
import time as mod_time
# Find the next datetime corresponding to 22:00
first_run = datetime.combine(date.today(), time(22,0))
first_run = first_run if first_run > datetime.now() else first_run + timedelta(1)
# Dumb test function
def my_function():
print('my_function')
# Run the function at 22:00
scheduler = sched.scheduler(mod_time.time, mod_time.sleep)
scheduler.enterabs(first_run.timestamp(), 1, my_function,())
scheduler.run()
Dieser Code arbeitet derzeit in Python . Ich möchte es in Python arbeiten. Mein einziges Problem kommt aus dem folgenden:
first_run.timestamp()
Ich versuchte es, mit etwas zu ersetzen:
(first_run - datetime(1970, 1, 1)).total_seconds()
Aber es scheint ein Problem mit meiner Zeitzone zu sein (UTC wäre zu einfach, ich m in UTC + 2). Es sollte etwas mit tzinfo in first_run geben. Vielleicht sollte ich etwas hinzufügen?
Ich bin ziemlich verloren, und jede Hilfe wäre willkommen. Vielen Dank im Voraus für die Hilfe.
EDIT1:
Nach Haochen Wu Kommentar, ich Convert datetime to Unix timestamp and convert it back in python
Jetzt gelesen habe ich weiß, dass die folgenden Zeilen für mich gleichwertig sind:
(datetime.now() - datetime(1970, 1, 1)).total_seconds()
(datetime.now() - datetime.utcfromtimestamp(0)).total_seconds()
Die Lösung sollte
sein(datetime.now() - datetime.fromtimestamp(0)).total_seconds()
Aber das ist nicht der Fall. Dieser Wert unterscheidet sich immer noch von mod_time.time()
.
Vielleicht wegen der Winter-/Sommerstunden?
Haben Sie lesen diese: http://stackoverflow.com/questions/19801727/convert-datetime-to-unix-timestamp-and-convert-it-back-in- Python –
Ich habe es gerade gelesen. Jetzt weiß ich, dass '(datetime.now() - datetime (1970, 1, 1)). Total_seconds()' ist für mich gleichbedeutend mit '(datetime.now() - datetime.utcfromtimestamp (0)). Total_seconds() '. Die Lösung sollte '(datetime.now() - datetime.fromtimestamp (0)). Total_seconds()' sein. Aber das ist nicht der Fall. Dieser Wert unterscheidet sich immer noch von "mod_time.time()". Vielleicht wegen der Winter-/Sommerstunden? – Niols
Meine beste Vermutung ist, dass Sie eine Unterklasse von TZInfo implementieren und diese zum Datetime-Objekt hinzufügen müssen. Weitere Informationen finden Sie in der Dokumentation: https: //docs.python.org/2/library/datetime.html#tzinfo-objects –