使用AM / PM将python字符串转换为datetime obj

时间:2015-08-12 03:58:39

标签: python datetime

容易出问题,但这让我烦恼:

说我有这样的字符串:

test = '2015-08-12 13:07:32'

要将其转换为日期时间对象并将其更改为AM / PM规范,这不应该起作用吗?

datetime.datetime.strptime(test, '%Y-%m-%d %I:%M:%S %p')

我收到这样的错误: ValueError: time data '2015-08-12 13:07:32' does not match format '%Y-%m-%d %I:%M:%S %p'

另外,奖励积分:

如果我已经拥有日期时间格式的内容,我该如何从该状态更改? (如果我想将它保留为日期时间对象,只需重新格式化以使其成为AM / PM)

1 个答案:

答案 0 :(得分:6)

datetime.strptime()用于将字符串转换为日期时间对象,使用strptime()时,您必须指定字符串中日期/时间的正确格式。

在您的情况下,格式应为 - '%Y-%m-%d %H:%M:%S'

示例 -

>>> test = '2015-08-12 13:07:32'
>>> import datetime
>>> datetime.datetime.strptime(test, '%Y-%m-%d %H:%M:%S')
datetime.datetime(2015, 8, 12, 13, 7, 32)

如果您真正想要的是将日期时间作为带有AM/PM的字符串返回,那么您需要使用strftime()将其转换回您想要的格式的字符串,在这种情况下格式为 - '%Y-%m-%d %I:%M:%S %p'。示例 -

>>> datetime.datetime.strptime(test, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %I:%M:%S %p')
'2015-08-12 01:07:32 PM'

datetime个对象内部不存储(也不必存储)AM / PM信息,因为可以从小时开始计算。