将String转换为Python datetime对象,不使用零填充

时间:2016-05-04 00:28:04

标签: python string datetime python-datetime

我正在使用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对象的建议,或者填充小时的更好方法都会有所帮助。

谢谢。

1 个答案:

答案 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