我想将Python日期时间转换为RFC 2822日期时间。我试过这些方法都没有用:
>>> from email.Utils import formatdate
>>> import datetime
>>> formatdate(datetime.datetime.now())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/email /utils.py", line 159, in formatdate
now = time.gmtime(timeval)
TypeError: a float is required
以下是一些工作代码,为了清楚起见,它们被分解成简单的片段:
解释:
email.utils.formatdate
需要一个时间戳——即一个自纪元以来带有秒(及其小数)的浮点。一个datetime
实例不会直接给你一个时间戳——但是,它可以用timetuple
方法给你一个时间元组,当然time.mktime
也可以用这样的元组来生成时间戳。Python 3.3除了其他注释者提到的方法之外,还添加了一个更干净的
format_datetime
方法:如果确实需要当前时间,只需调用不带参数的
formatdate
:但是,如果必须传递参数,则需要输出
time.time
(自1970年1月1日起的秒数):FWIW,
datetime.datetime.now()
返回一个datetime
对象,这不是formatdate
所期望的。编辑以添加:如果您已经有一个datetime对象,则可以将其适当格式化为formatdate:
编辑:Alex Martelli注意到strftime的'%s'格式字符串可能无法跨平台移植。一个可能的替代方案是,正如他自己所建议的那样
相关问题 更多 >
编程相关推荐