Как я анализирую часовые пояса со смещениями UTC в Python?

Знают, что и TCP и UDP (и IP и Ethernet, и...) уже обеспечивают защиту контрольной суммы к данным в пути?

, Если Вы не делаете что-то действительно странное, если Вы видите повреждение, что-то очень неправильно. Я предлагаю запуститься с тестер памяти .

кроме того, Вы получаете сильную защиту целостности данных при использовании SSL/TLS.

6
задан SilentGhost 7 May 2010 в 16:47
поделиться

4 ответа

Недавно я столкнулся с той же проблемой и решил ее решить, используя этот код:

gmt_offset_str = time_string[-3:]
gmt_offset_seconds = int(gmt_offset_str)*60*60
timestamp = time.strptime(time_string[:-4], '%Y-%m-%d %H:%M:%S')
return time.localtime(time.mktime(timestamp)-gmt_offset_seconds)

Меня также заинтересовало бы более элегантное решение.

0
ответ дан 8 December 2019 в 04:09
поделиться

используйте Babel , в частности parse_datetime .

.
3
ответ дан 8 December 2019 в 04:09
поделиться

Вы можете сделать это непосредственно в конструкторе: class datetime.datetime (год, месяц, день [, час [, минута [, секунда [, микросекунда [, tzinfo) ]]]]]) , где tzinfo является объектом datetime.tzinfo dervided.

tzinfo является абстрактным базовым классом, что означает, что этот класс не должен создаваться напрямую . Вам необходимо создать конкретный подкласс и (по крайней мере) предоставить реализации стандартных методов tzinfo, необходимых для используемых вами методов datetime. Модуль datetime не предоставляет каких-либо конкретных подклассов tzinfo.

Что вам нужно переопределить, так это метод utcoffset (self, dt) .

Возвращает смещение местного времени от UTC в минутах к востоку UTC. Если местное время находится к западу от UTC, оно должно быть отрицательным. Обратите внимание, что это общее смещение от UTC; например, если объект tzinfo представляет настройки часового пояса и летнего времени, utcoffset () должен вернуть их сумму. Если смещение UTC неизвестно, верните None. В противном случае возвращаемое значение должно быть объектом timedelta, определяющим целое количество минут в диапазоне от -1439 до 1439 включительно (1440 = 24 * 60; величина смещения должна быть меньше одного дня). Большинство реализаций utcoffset (), вероятно, будут выглядеть как одна из этих двух:

return CONSTANT # класс с фиксированным смещением

return CONSTANT + self.dst (dt) # класс с учетом дневного света

Если utcoffset () делает not return None, dst () также не должен возвращать None.

Реализация utcoffset () по умолчанию вызывает NotImplementedError.

В противном случае возвращаемое значение должно быть объектом timedelta, определяющим целое количество минут в диапазоне от -1439 до 1439 включительно (1440 = 24 * 60; величина смещения должна быть меньше одного дня). Большинство реализаций utcoffset (), вероятно, будут выглядеть как одна из этих двух:

return CONSTANT # класс с фиксированным смещением

return CONSTANT + self.dst (dt) # класс с учетом дневного света

Если utcoffset () делает not return None, dst () также не должен возвращать None.

Реализация utcoffset () по умолчанию вызывает NotImplementedError.

В противном случае возвращаемое значение должно быть объектом timedelta, определяющим целое количество минут в диапазоне от -1439 до 1439 включительно (1440 = 24 * 60; величина смещения должна быть меньше одного дня). Большинство реализаций utcoffset (), вероятно, будут выглядеть как одна из этих двух:

return CONSTANT # класс с фиксированным смещением

return CONSTANT + self.dst (dt) # класс с учетом дневного света

Если utcoffset () делает not return None, dst () также не должен возвращать None.

Реализация utcoffset () по умолчанию вызывает NotImplementedError.

0
ответ дан 8 December 2019 в 04:09
поделиться

Может быть, вы могли бы использовать dateutil.parser.parse ? Этот метод также упоминается на wiki.python.org/WorkingWithTime .

>>> from dateutil.parser import parse
>>> parse("2009-08-18 13:52:54-04")
datetime.datetime(2009, 8, 18, 13, 52, 54, tzinfo=tzoffset(None, -14400))

(повторяется ли этот вопрос?)

23
ответ дан 8 December 2019 в 04:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: