2010-08-22 5 views

ответ

2

Если «UTC метка времени» с плавающей точкой (целое будет достаточно) в «секундах от эпохи», и ваш «локальная метка времени «это какая-то странная версия, которая сдвинута в ваши локальные координаты времени (нет« эпохи », кроме UTC), достаточно модуля time в стандартной библиотеке Python.

Как показано в этих документах, учитывая «секунды с эпохи», gmtime переводит это в 9-элементный кортеж в UTC, localtime в кортеж из 9 предметов по местному времени; чтобы перейти на другую сторону, calendar.timegm (UTC 9-элементный кортеж к отметке времени UTC) и mktime (местное время 9-элементный кортеж для метки времени UTC). Вы заметите, что нет такой вещи, как «местная временная метка» (только локальные временные файлы с 9 элементами, например, struct_time экземпляров), просто потому, что такой концепции не существует.

Но, если я правильно понимаю, что вы подразумеваете под «локальной меткой времени», а затем переводите ее на время структуры, «как если бы» это была настоящая временная метка, а затем обратно в локальное время, вы получите смещение, которое вы ищете (в секундах). Что касается DST, то бит, указывающий, включен ли он, - это 9-й элемент кортежей, о котором мы упоминали.

Например, используя "местную временную метку" только:

>>> loct 
1282453595 
>>> time.mktime(time.gmtime(loct)) - loct 
28800.0 
>>> _/3600 
8.0 
>>> 

Это говорит о том, что я 8 часов к западу от UTC. И:

>>> time.localtime(loct)[-1] 
1 

это говорит о том, что является с ДСТ в действие.

+1

У вас была проблема: у меня есть метка времени UTC, которая представляет 00:00:00 в произвольную дату в произвольный часовой пояс. Я знаю, что такое произвольная дата, но я не знаю часовой пояс. Если я преобразую timestamp в объект datetime, я могу использовать значение часа для определения часового пояса, но проблема в DST. Если DST действует, часовой пояс будет сдвинут на один. Тем не менее, я уверен, что часовой пояс будет один в США. Во всяком случае, я нашел решение проблемы (хотя и не чистое, этого будет достаточно.) Спасибо! – gvl

Смежные вопросы