Pracuję nad konwertowaniem znaczników czasu epoki na daty w różnych strefach czasowych z pytz. Próbuję utworzyć obiekt DateTime, który akceptuje strefę czasową bazy danych Olson i czas epoki i zwraca lokalny obiekt datetime. W końcu muszę odpowiedzieć na pytania typu "Która godzina była w Nowym Jorku w epoce 1350663248?"Lokalizowanie czasu epoki za pomocą pytz w języku Python
Coś nie działa prawidłowo tutaj:
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
Wypisuje tę samą godzinę, natomiast trzeba być 3 lub tak godzin naprzód. Co tu nie pasuje? Jestem początkującym początkującym Pythonem, każda pomoc jest doceniana!
Używasz tutaj niewłaściwej terminologii. Epoką jest zawsze * 1-1-1970, północ UTC. To, co masz, to znacznik czasu UNIX, który jest przesunięciem względem epoki. Zobacz https://en.wikipedia.org/wiki/Unix_epoch –
tylko nazwa zmiennej, możesz nazwać ją 'epoch_time' nie ma znaczenia dla problemu – mobiusinversion