Временные метки Python и RFC 3339
Где я могу найти процедуру построения RFC 3339 времени?
3 ответа
Это было основано на примерах на странице 10 RFC. Единственное отличие состоит в том, что я показываю микросекунды из шести цифр, соответствующие временным меткам Google Диска.
from math import floor
def build_rfc3339_phrase(datetime_obj):
datetime_phrase = datetime_obj.strftime('%Y-%m-%dT%H:%M:%S')
us = datetime_obj.strftime('%f')
seconds = datetime_obj.utcoffset().total_seconds()
if seconds is None:
datetime_phrase += 'Z'
else:
# Append: decimal, 6-digit uS, -/+, hours, minutes
datetime_phrase += ('.%.6s%s%02d:%02d' % (
us,
('-' if seconds < 0 else '+'),
abs(int(floor(seconds / 3600))),
abs(seconds % 3600)
))
return datetime_phrase
rfc3339 очень гибок - http://www.ietf.org/rfc/rfc3339.txt - он эффективно определяет целую кучу форматов. Вы можете генерировать почти все из них, просто используя стандартное форматирование времени Python - http://docs.python.org/3.3/library/datetime.html
однако есть одна странность, и они позволяют (это необязательно) :
между часами и минутами в числовом смещении часового пояса (%z
). Python не будет отображать это, поэтому, если вы хотите включить его, вам нужен python-rfc3339 или аналогичный.
для парсинга rfc3339, simple-date будет обрабатывать все форматы. но так как он использует процедуры печати Python, он не может обрабатывать :
дело выше.