Преобразувайте UTC TimeStamp в обект за дата и час, като вземете предвид лятното часово време

Използвайки:

 time.mktime(datetime.datetime.now(pytz.timezone("UTC")).timetuple())

Часовото клеймо на 19 април 2012 г. малко след 10:00 ч. в Ню Йорк беше 1334840917. Като се има предвид това времево клеймо, как мога да го конвертирам обратно в обект за дата и час, който отчита лятното часово време?

If I do:

   >>>eastern = pytz.timezone("Us/Eastern")
   >>>dt = datetime.datetime.fromtimestamp(1334840917,eastern)
   >>>dt.hour

Резултатът е: 9


person Alexander    schedule 19.04.2012    source източник
comment
Има ли причина вашите времеви марки да са в местно време, а не UTC?   -  person Maxim Egorushkin    schedule 19.04.2012
comment
Времевите клейма са в UTC, не е ли това: time.mktime(datetime.datetime.now(pytz.timezone(UTC)).timetuple()) прави?   -  person Alexander    schedule 19.04.2012
comment
Да, прав си, така е. Използвах calendar.timegm(datetime.datetime.utcnow().utctimetuple()), което трябва да е същото.   -  person Maxim Egorushkin    schedule 19.04.2012


Отговори (1)


person    schedule
comment
Мисля, че time.daylight използва местното време, за да определи дали е лятно часово време. Въпреки това, ако имам времеви отпечатъци от преди 11 март 2012 г., не мисля, че това ще работи. - person Alexander; 19.04.2012
comment
Да, не мислех, че искате да получите време от друг източник. Не можете да използвате само обикновени времеви марки, за да получите информация за лятното часово време, AFAIK. - person reith; 19.04.2012