2016-04-22 145 views
1

当使用解析长字符串日期时间

import datetime 
s = 'Sat Apr 23 2016 00:00:00 GMT+0100' 
print datetime.datetime.strptime(s, "%a %m %d %y %H:%M:%S GMT+0100") 

我得到:

ValueError: time data 'Sat Apr 23 2016 00:00:00 GMT+0100' does not match format '%a %m %d %y %H:%M:%S GMT+0100'

如何分析这样的字符串?

注:使用dateutil.parser.parse没有工作:它产生了一些奇怪的datetime对象,我可以减去另一个日期时间,即d1 - d2没有工作。

+0

你是什么意思,你不能从另一个减去datetime对象?错误信息是什么?我想不出任何会阻止你减去两个日期时间的失败模式。 – Paul

+0

不推荐将dateutil解析器用于已知的格式,但仅供参考,我怀疑问题是解析器给你一个时区感知对象。如果你想减去另一个日期时间,你可能希望它们都是时区感知的,或者都是本地的。最好的办法就是将UTC转换为绝对时差。 – Paul

回答

3

this reference, 格式建议立即进行删除d是"%a %b %d %Y %H:%M:%S GMT+0100"

2

改为使用此:"%a %b %d %Y %H:%M:%S GMT+0100"。与%b

  • 替换%m(每月零填充小数)(月如语言环境的缩写名称)
  • 替换%y(全年无世纪的零填充:

    我做了两个转变十进制数)与%Y(一年世纪的十进制数)