Ho un pezzo di python codice 3, che chiama una funzione alle 22:00.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()
Questo codice sta lavorando in pitone . Mi piacerebbe che funzionasse in python . Il mio unico problema deriva dal seguente:
first_run.timestamp()
ho provato a sostituirlo con qualcosa di simile:
(first_run - datetime(1970, 1, 1)).total_seconds()
Ma sembra che ci sia un problema con il mio fuso orario (UTC sarebbe troppo facile, I' m in UTC + 2). Ci dovrebbe essere qualcosa con tzinfo in first_run. Forse dovrei aggiungere qualcosa?
Sono abbastanza perso e ogni aiuto sarebbe apprezzato. Grazie mille per avermi aiutato.
Edit1:
Dopo il commento di Haochen Wu, ho letto Convert datetime to Unix timestamp and convert it back in python
Ora so che le righe seguenti sono equivalenti per me:
(datetime.now() - datetime(1970, 1, 1)).total_seconds()
(datetime.now() - datetime.utcfromtimestamp(0)).total_seconds()
La soluzione deve essere
(datetime.now() - datetime.fromtimestamp(0)).total_seconds()
Ma questo non è il caso. Questo valore è ancora diverso da mod_time.time()
.
Forse a causa delle ore invernali/estive?
Hai letto questo: http://stackoverflow.com/questions/19801727/convert-datetime-to-unix-timestamp-and-convert-it-back-in- python –
L'ho appena letto. Ora so che '(datetime.now() - datetime (1970, 1, 1)). Total_seconds()' è equivalente per me a '(datetime.now() - datetime.utcfromtimestamp (0)). Total_seconds() '. La soluzione dovrebbe essere '(datetime.now() - datetime.fromtimestamp (0)). Total_seconds()'. Ma questo non è il caso. Questo valore è ancora diverso da 'mod_time.time()'. Forse a causa delle ore invernali/estive? – Niols
La mia ipotesi migliore è che sarà necessario implementare una sottoclasse di tzinfo e aggiungerla all'oggetto datetime. Vedi i documenti: https: //docs.python.org/2/library/datetime.html#tzinfo-objects –