尝试解析数字格式的日期时:
s ="2506181306"
使用适当的日期格式:
DateFormat = '%d%m%H%M%S'
dateutil.parser.parse(s).strftime(DateFormat)
我们最终得到“大于最大值的整数”错误:
In [15]: dateutil.parser.parse(s).strftime(DateFormat)
---------------------------------------------------------------------------
OverflowError Traceback (most recent call last)
<ipython-input-15-9eead825f5c9> in <module>()
----> 1 dateutil.parser.parse(s).strftime(DateFormat)
/usr/local/lib/python2.7/site-packages/dateutil/parser.pyc in parse(timestr, parserinfo, **kwargs)
1006 return parser(parserinfo).parse(timestr, **kwargs)
1007 else:
-> 1008 return DEFAULTPARSER.parse(timestr, **kwargs)
1009
1010
/usr/local/lib/python2.7/site-packages/dateutil/parser.pyc in parse(self, timestr, default, ignoretz, tzinfos, **kwargs)
402 repl[attr] = value
403
--> 404 ret = default.replace(**repl)
405
406 if res.weekday is not None and not res.day:
OverflowError: signed integer is greater than maximum
那么解析那个日期的正确方法是什么?是“大于最大值”是指日期内的单个字段 - 还是整个字符串?
更新雅各布提供了正确的方法
In [21]: from datetime import datetime
In [22]: datetime.strptime(s,DateFormat)
Out[22]: datetime.datetime(1900, 6, 25, 18, 13, 6)
答案 0 :(得分:4)
DateFormat = '%d%m%H%M%S'
dateutil.parser.parse(s).strftime(DateFormat)
您尝试在不先设置格式的情况下解析此问题。错误从parse
引发,调用链甚至没有进入strftime
调用。它试图为该字符串选择一个对它有意义的格式,它选择的格式似乎是一个unix纪元时间戳,但最多应该是31位(因为签名),所以它错了。
你可能想要的是:
datetime.strptime(s,DateFormat)