我正在使用python 3.5。
我有一个格式为mm/dd/yyyy H:MM:SS AM/PM
的字符串,我想作为python datetime对象。
这是我尝试过的。
date = "09/10/2015 6:17:09 PM"
date_obj = datetime.datetime.strptime(date, '%d/%m/%Y %I:%M:%S %p')
但这会出错,因为小时不是零填充。格式化是根据表格完成的 datetime documentation,不允许小时有一位数。
我尝试将日期分开,添加零,然后将字符串重新组合在一起,虽然这有效,但这似乎不太健壮/理想。
date = "09/10/2015 6:17:09 PM"
date = date.split()
date = date[0] + " 0" + date[1] + " " + date[2]
任何关于如何直接获取datetime
对象的建议,或者填充小时的更好方法都会有所帮助。
谢谢。
答案 0 :(得分:0)
此代码没有任何问题:
>>> date = "09/10/2015 6:17:09 PM"
>>> date_obj = datetime.datetime.strptime(date, '%m/%d/%Y %I:%M:%S %p')
>>> date_obj
datetime.datetime(2015, 9, 10, 18, 17, 9)
>>> print(date_obj)
2015-09-10 18:17:09
datetime
对象的各个属性是整数,而不是字符串,内部表示使用小时的24小时值。
请注意,我已在格式字符串中交换了日期和月份,因为您声明输入格式为mm/dd/yyyy
。
但是看起来你真的希望它是一个零填充小时的字符串,所以你可以像这样使用datetime.strftime()
:
>>> date_str = date_obj.strftime('%m/%d/%Y %I:%M:%S %p')
>>> print(date_str)
09/10/2015 06:17:09 PM
# or, if you actually want the output format as %d/%m/%Y....
>>> print(date_obj.strftime('%d/%m/%Y %I:%M:%S %p'))
10/09/2015 06:17:09 PM