Где я могу найти рутину для создания RFC 3339 времени?Временные метки Python и RFC 3339
ответ
Это было основано на примерах на стр. 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
python-rfc3339 отлично подходит для меня.
rfc3339 очень гибкий - http://www.ietf.org/rfc/rfc3339.txt - он эффективно определяет целую кучу форматов. вы можете создать почти все из них только с использованием стандартного времени питона форматирования - http://docs.python.org/3.3/library/datetime.html#strftime-strptime-behavior
однако, есть одна странность, и что они позволяют (это необязательно) :
между часами и минутами в числовом смещение часового пояса (%z
) , python не отобразит это, поэтому, если вы хотите включить, что вам нужен python-rfc3339 или аналогичный.
для синтаксический анализ rfc3339, simple-date будет обрабатывать все форматы. но поскольку он использует подпрограммы python print, он не может обрабатывать описанный выше случай :
.