Python解析日期与strptime

arb*_*115 3 python datetime python-3.x datetime-parsing

我有以这种格式返回日期的网址

url_date = "2015-01-12T08:43:02Z"
Run Code Online (Sandbox Code Playgroud)

我不知道为什么有字符串,它会更容易得到它,因为"2015-01-1208:43:02"它可以更简单地解析使用

datetime.datetime.strptime(url_date , '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我试过了

%Y-%m-%d
%Y-%m-%d-%H-%M-%S
%Y-%m-%d-%H-%M-%S-%Z
Run Code Online (Sandbox Code Playgroud)

但我一直得到像"时间数据2015-01-12T08:43:02Z不匹配......"的错误

Kev*_*vin 5

在最后一次尝试中你接近"Z" - 你需要在格式字符串中指定T,Z和冒号文字值.

>>> import datetime
>>> url_date = "2015-01-12T08:43:02Z"
>>> datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2015, 1, 12, 8, 43, 2)
Run Code Online (Sandbox Code Playgroud)


Ana*_*mar 5

您正在寻找的格式是 - '%Y-%m-%dT%H:%M:%SZ'

例子 -

>>> url_date = "2015-01-12T08:43:02Z"
>>> import datetime
>>> datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2015, 1, 12, 8, 43, 2)
Run Code Online (Sandbox Code Playgroud)

对于评论中的新要求 -

如果我想用 2015-01-12:08:43:02 中的字符串返回时间,哪些方法应该在 datetime().datetime() 之后

您需要.strftime()datetime.datetime对象上使用格式 - '%Y-%m-%d:%H:%M:%S'。例子 -

>>> url_date = "2015-01-12T08:43:02Z"
>>> dt = datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
>>> dt.strftime('%Y-%m-%d:%H:%M:%S')
'2015-01-12:08:43:02'
Run Code Online (Sandbox Code Playgroud)

如果你想要时间组件,你可以使用.time()它。例子 -

>>> dt = datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
>>> dt.time()
datetime.time(8, 43, 2)
Run Code Online (Sandbox Code Playgroud)