我试图将日期字符串转换为Python但却出错 -
字符串:'1986-09-22T00:00:00'
dob_python = datetime.strptime('1986-09-22T00:00:00' , '%Y-%m-%d%Z%H-%M-%S').date()
错误: -
ValueError: time data '1986-09-22T00:00:00' does not match format '%Y-%m-%d%Z%H-%M-%S'
答案 0 :(得分:5)
T
不是时区。 只是一个分隔符。请勿使用%Z
尝试解析它,请使用文字T
。你的时间分隔符也必须匹配;你需要寻找:
冒号,而不是破折号:
dob_python = datetime.strptime('1986-09-22T00:00:00', '%Y-%m-%dT%H:%M:%S').date()
# ^ ^ ^
演示:
>>> from datetime import datetime
>>> datetime.strptime('1986-09-22T00:00:00', '%Y-%m-%dT%H:%M:%S').date()
datetime.date(1986, 9, 22)
答案 1 :(得分:1)
注意相应的格式字符串 - 否则会出错。
from datetime import datetime
datetime.strptime('1986-09-22T01:02:03', '%Y-%m-%dT%H:%M:%S').date()
#datetime.date(1986, 9, 22)
1986
匹配%Y
09
匹配%m
22
匹配%d
01
匹配%H
02
匹配%M
03
匹配%S
详细地说,您可以参考python文档。它有清晰的描述和例子。
https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
答案 2 :(得分:0)
您可以使用easy_date轻松实现:
import date_converter
dob_python = date_converter.string_to_date('1986-09-22T00:00:00', '%Y-%m-%dT%H:%M:%S')