从字符串中解析日期/时间

时间:2013-06-08 11:18:46

标签: python python-3.x

我正在使用Python 3.3。我从IMAP服务器收到一封电子邮件,然后将其转换为standard email library的电子邮件实例。

我这样做:

message.get("date")

这给了我这个例子:

Wed, 23 Jan 2011 12:03:11 -0700

我想将此转换为我可以放入time.strftime()的内容,以便我可以很好地格式化它。我希望结果是当地时间,而不是UTC。

有很多功能,不赞成使用的方法和附带案例,不确定现代路线是什么?

3 个答案:

答案 0 :(得分:4)

这样的东西?

>>> import time
>>> s = "Wed, 23 Jan 2011 12:03:11 -0700"
>>> newtime = time.strptime(s, '%a, %d %b %Y %H:%M:%S -0700')
>>> print(time.strftime('Two years ago was %Y', newtime))
Two years ago was 2011 # Or whatever output you wish to receive.

答案 1 :(得分:1)

我使用python-dateutil来解析日期时间字符串。来自此库的函数parse对于此类任务非常方便

答案 2 :(得分:0)

这样做:

import email, email.utils, datetime, time    

def dtFormat(s):
  dt = email.utils.parsedate_tz(s)
  dt = email.utils.mktime_tz(dt)
  dt = datetime.datetime.fromtimestamp(dt)
  dt = dt.timetuple()
  return dt

然后这个:

s = message.get("date")    # e.g. "Wed, 23 Jan 2011 12:03:11 -0700"
print(time.strftime("%Y-%m-%d-%H-%M-%S", dtFormat(s)))

给出了这个:

2011-01-23-21-03-11