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