将字符串转换为 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
我正在使用 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