[英]Python 3.4 strptime() not working
我正在尝试将字符串转换为日期时间,但它不起作用...
self.loadsList[loadID][5] = datetime.strptime(
self.loadsList[loadID][5]+" "+self.loadsList[loadID][6], "%x %X %z")
它会引发值错误。
ValueError: time data '11/08/2014 04:00:00 -0500' does not match format '%x %X %z'
我究竟做错了什么? 谢谢! (Python 3.4)
默认的%x
格式相当于%d/%m/%y
,其中%y
匹配两位数的年份:
>>> import locale
>>> locale.nl_langinfo(locale.D_FMT)
'%m/%d/%y'
您的输入改为使用 4 位数年份:
>>> from datetime import datetime
>>> datetime.strptime('11/08/2014', '%x')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.4/_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.4/_strptime.py", line 340, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: 14
我不会使用%x
或%X
,只是拼出日期和时间格式; 根据您的输入和%x
的使用:
'%m/%d/%Y %H:%M:%S %z'
演示:
>>> datetime.strptime('11/08/2014 04:00:00 -0500', '%m/%d/%Y %H:%M:%S %z')
datetime.datetime(2014, 11, 8, 4, 0, tzinfo=datetime.timezone(datetime.timedelta(-1, 68400)))
不清楚您的输入是代表 11 月 8 日还是 8 月 11 日; 您对%x
的使用建议前者,但我怀疑您应该以相反的方式解释该值:
'%d/%m/%Y %H:%M:%S %z'
另一种方法是将 Python 语言环境从默认的C
切换到en_US
,其中年份将使用 4 位数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.