不使用零填充将字符串转换为Python datetime对象

不使用零填充将字符串转换为Python datetime对象,python,string,datetime,python-datetime,Python,String,Datetime,Python Datetime,我正在使用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') 但这会得到一个错误,因为小时不是零填充的。格式化是根据上的表进行的 ,它不允许小时有一个数字 我尝试过将日期拆分,添加一个零,

我正在使用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')
但这会得到一个错误,因为小时不是零填充的。格式化是根据上的表进行的 ,它不允许小时有一个数字

我尝试过将日期拆分,添加一个零,然后将字符串重新组合在一起,虽然这样做有效,但似乎不太可靠/理想

    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

我在python 2.7中获得了
2015-10-09 18:17:09
作为输出。你能分享具体的例外情况吗。您使用的是哪一版本的python?这不是问题的原因,但您声明日期字符串的格式为
mm/dd/yyyy
,但代码假定
“%d/%m/%Y
,即日和月互换。