如何在Python中将RFC 822时间戳转换为可读格式?

2 投票
3 回答
3797 浏览
提问于 2025-04-16 14:57

有没有人知道有没有Python模块可以把RFC 822格式的时间戳转换成普通人能看懂的格式(就像Twitter那样)?

我找到一个叫parsedatetime的东西,但它好像是做反向转换的。

3 个回答

2

datetime.strptime 这个函数可以把时间戳转换成一个日期时间对象,这样你就可以用 datetime.strftime 来格式化它。

http://docs.python.org/library/datetime.html#strftime-strptime-behavior

8

在Python中,你可以使用rfc822模块。这个模块提供了一个叫做 parsedate 的方法。

这个方法试图根据RFC 2822的规则来解析日期。

不过,这个模块现在已经不推荐使用了。

自从2.3版本起就不推荐使用:应该优先使用email包,而不是rfc822模块。这个模块只是为了保持向后兼容而存在,在3.0版本中已经被移除了。

根据这个评论,最好使用来自 email.utils 模块的 parsedate 方法。

email.utils.parsedate(date)

编辑:

示例代码:

import email.utils
from time import mktime
from datetime import datetime

example_date = "Sat, 02 Mar 2011 15:00:00"
date_parsed = email.utils.parsedate(example_date)
dt = datetime.fromtimestamp(mktime(date_parsed))

today = datetime.today()
diff_date = today - dt  # timedelta object

print "%s days, %s hours ago" \
    % (diff_date.days, diff_date.seconds / 3600)

输出(目前):

31 days, 2 hours ago

撰写回答