将字符串转换为日期 python
Converting string to date python
我是 following 以下关于如何在 python 中将字符串转换为日期对象的指南,但我遇到了一个我不太明白的错误。
我正在尝试执行以下操作:
buildDateArray.append(dt.strptime(date,"%y-%b-%d %H:%M:%S"))
但我收到以下错误消息:
buildDateArray.append(dt.strptime(date,"%y-%b-%d %H:%M:%S"))
File "/usr/lib64/python2.6/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '2014-11-17 00:00:00' does not match format '%y-%b-%d %H:%M:%S'
不明白为什么'2014-11-17 00:00:00'不匹配格式'%y-%b-% d %H:%M:%S'
你能看出错误是什么吗?
您的格式有两个问题:
%y
匹配 两位数 年份,但您的年份包含 4。使用 %Y
(大写 Y
) 相反。
%b
匹配 命名的 月份,缩写;使用 %m
来匹配数字月份;你需要在这里匹配 11
,而不是 Nov
.
演示:
>>> from datetime import datetime
>>> datetime.strptime('2014-11-17 00:00:00', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2014, 11, 17, 0, 0)
当您遇到这样的问题时,请尝试将其缩小到组件;例如,您可以尝试 just 年份部分,它仍然会失败,但会出现一个不同的错误,给您一个关于它可能失败原因的重要提示:
>>> datetime.strptime('2014', '%y')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python2.7/_strptime.py", line 328, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: 14
因为您使用的是datetime.strptime()
class method, you need to look a the correct documentation, found at strftime()
and strptime()
Behavior;它详细说明了每个模式匹配的内容。
您的格式有两个问题
- 使用大写
Y
来匹配四位数年份而不是小写 y
(它只匹配两位数)
- 使用
%m
而不是 %b
来匹配数字月份而不是缩写月份(即 11
与 Nov
)
您的最终格式为:
"%Y-%m-%d %H:%M:%S"
我是 following 以下关于如何在 python 中将字符串转换为日期对象的指南,但我遇到了一个我不太明白的错误。
我正在尝试执行以下操作:
buildDateArray.append(dt.strptime(date,"%y-%b-%d %H:%M:%S"))
但我收到以下错误消息:
buildDateArray.append(dt.strptime(date,"%y-%b-%d %H:%M:%S"))
File "/usr/lib64/python2.6/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '2014-11-17 00:00:00' does not match format '%y-%b-%d %H:%M:%S'
不明白为什么'2014-11-17 00:00:00'不匹配格式'%y-%b-% d %H:%M:%S'
你能看出错误是什么吗?
您的格式有两个问题:
%y
匹配 两位数 年份,但您的年份包含 4。使用%Y
(大写Y
) 相反。%b
匹配 命名的 月份,缩写;使用%m
来匹配数字月份;你需要在这里匹配11
,而不是Nov
.
演示:
>>> from datetime import datetime
>>> datetime.strptime('2014-11-17 00:00:00', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2014, 11, 17, 0, 0)
当您遇到这样的问题时,请尝试将其缩小到组件;例如,您可以尝试 just 年份部分,它仍然会失败,但会出现一个不同的错误,给您一个关于它可能失败原因的重要提示:
>>> datetime.strptime('2014', '%y')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python2.7/_strptime.py", line 328, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: 14
因为您使用的是datetime.strptime()
class method, you need to look a the correct documentation, found at strftime()
and strptime()
Behavior;它详细说明了每个模式匹配的内容。
您的格式有两个问题
- 使用大写
Y
来匹配四位数年份而不是小写y
(它只匹配两位数) - 使用
%m
而不是%b
来匹配数字月份而不是缩写月份(即11
与Nov
)
您的最终格式为:
"%Y-%m-%d %H:%M:%S"