Python和RFC 3339时间戳

时间:2013-02-23 21:52:26

标签: python datetime rfc3339

在哪里可以找到构建RFC 3339时间的例程?

3 个答案:

答案 0 :(得分:1)

这是基于RFC第10页的示例。唯一的区别是我显示的是六位数的微秒值,符合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

答案 1 :(得分:0)

python-rfc3339对我很有用。

答案 2 :(得分:0)

rfc3339非常灵活 - http://www.ietf.org/rfc/rfc3339.txt - 它有效地定义了一大堆格式。你可以使用标准的python时间格式生成几乎所有这些格式 - http://docs.python.org/3.3/library/datetime.html#strftime-strptime-behavior

然而,有一个奇怪的地方,就是它们允许(可选)在数字时区偏移(:)中的小时和分钟之间%z。 python不会显示,所以如果你想包括你需要python-rfc3339或类似的。

对于解析 rfc3339,simple-date将处理所有格式。但由于它使用python打印例程,因此无法处理上面的:情况。