我试图用Python生成一个RFC 3339UTC时间戳。到目前为止,我已经做到了以下几点:
>>> d = datetime.datetime.now()
>>> print d.isoformat('T')
2011-12-18T20:46:00.392227
我的问题是设置UTC偏移量。
根据docs,classmethoddatetime.now([tz])
,接受一个可选的tz
参数,其中tz must be an instance of a class tzinfo subclass
,并且datetime.tzinfo
是an abstract base class for time zone information objects.
这就是我迷路的地方-为什么tzinfo是一个抽象类,我应该如何实现它?
(注意:在PHP中,它就像timestamp = date(DATE_RFC3339);
一样简单,这就是为什么我不能理解Python的方法为何如此复杂……)
时区是一种痛苦,这可能就是为什么他们选择不将它们包含在datetime库中。
试试pytz,它有你要找的tzinfo: http://pytz.sourceforge.net/
您需要首先创建
datetime
对象,然后应用如下所示的时区,然后.isoformat()
输出将根据需要包括UTC偏移:或者,只需使用UTC,并在末尾抛出一个“Z”(表示Zulu时区),将“时区”标记为UTC。
在Python3.3+中:
在较旧的Python版本中,如果您只需要一个表示当前时间(以UTC表示)的aware datetime对象,那么您可以define a simple tzinfo subclass as shown in the docs to represent UTC timezone:
您还可以使用^{} module 来获取表示本地时区的
pytz
时区:它在Python 2和3上都能工作。
Further down在链接到的同一文档中,它解释了如何实现它,给出了一些示例,包括
UTC
类(表示UTC)的完整代码、FixedOffset
类(表示与UTC有固定偏移量的时区,而不是带有DST和whatnot的时区)以及其他一些示例。相关问题 更多 >
编程相关推荐