Знают, что и TCP и UDP (и IP и Ethernet, и...) уже обеспечивают защиту контрольной суммы к данным в пути?
, Если Вы не делаете что-то действительно странное, если Вы видите повреждение, что-то очень неправильно. Я предлагаю запуститься с тестер памяти .
кроме того, Вы получаете сильную защиту целостности данных при использовании SSL/TLS.
Недавно я столкнулся с той же проблемой и решил ее решить, используя этот код:
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)
Меня также заинтересовало бы более элегантное решение.
Вы можете сделать это непосредственно в конструкторе: 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.
Может быть, вы могли бы использовать 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))
(повторяется ли этот вопрос?)