将字符串转换为 Python 日期时间对象而不用零填充

Convert String to Python datetime Object without Zero Padding

我正在使用 python 3.5.

我有一个格式为 mm/dd/yyyy H:MM:SS AM/PM 的字符串,我想将其作为 python 日期时间对象。

这是我试过的方法。

    date = "09/10/2015 6:17:09 PM"
    date_obj = datetime.datetime.strptime(date, '%d/%m/%Y %I:%M:%S %p')

但这会出错,因为小时未用零填充。格式是根据 table 在 datetime documentation,不允许小时有一个数字。

我试过将日期分开,添加一个零,然后将字符串重新组合在一起,虽然这可行,但似乎更少 robust/ideal。

    date = "09/10/2015 6:17:09 PM"
    date = date.split()
    date = date[0] + " 0" + date[1] + " " + date[2]

任何有关如何直接获取 datetime 对象的建议,或更好的填充时间的方法都会有所帮助。

谢谢。

这段代码没有错:

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