Sto lavorando alla conversione di timecamp in epoca in date in diversi fusi orari con pytz. Quello che sto cercando di fare è creare un oggetto DateTime che accetti un fuso orario del database Olson e un tempo storico e restituisca un oggetto datetime localizzato. Alla fine ho bisogno di rispondere a domande del tipo "Che ore erano a New York in epoca 1350663248?"Localizzare Epoch Time con pytz in Python
qualcosa non funziona correttamente qui:
import datetime, pytz, time
class DateTime:
def __init__(self, timezone, epoch):
self.timezone = timezone
self.epoch = epoch
timezoneobject = pytz.timezone(timezone)
datetimeobject = datetime.datetime.fromtimestamp(self.epoch)
self.datetime = timezoneobject.localize(datetimeobject)
def hour(self):
return self.datetime.hour
if __name__=='__main__':
epoch = time.time()
dt = DateTime('America/Los_Angeles',epoch)
print dt.datetime.hour
dt = DateTime('America/New_York',epoch)
print dt.datetime.hour
Questa stampa la stessa ora, mentre si dovrebbe essere di 3 o giù di lì ore avanti. Cosa sta andando storto qui? Sono un principiante di Python, ogni aiuto è apprezzato!
Si sta utilizzando la terminologia sbagliata qui. L'epoca è * sempre * 1-1-1970, mezzanotte UTC. Quello che hai è un timestamp UNIX, che è un offset dall'epoca. Vedi https://en.wikipedia.org/wiki/Unix_epoch –
solo un nome di variabile, si potrebbe chiamarlo 'epoch_time' non fa differenza per il problema – mobiusinversion