2013-02-23 3 views

ответ

1

Это было основано на примерах на стр. 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 
0

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, он не может обрабатывать описанный выше случай :.

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