【问题标题】:Convert String to Python datetime Object without Zero Padding将字符串转换为没有零填充的 Python 日期时间对象
【发布时间】:2016-05-04 00:28:03
【问题描述】:

我正在使用 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')

但这会出错,因为小时不是零填充的。格式化是按照表格上的 datetime documentation,它不允许小时有一位数。

我尝试将日期拆分,添加一个零,然后将字符串重新组合在一起,虽然这可行,但这似乎不太健壮/理想。

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

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

谢谢。

【问题讨论】:

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

标签: python string datetime python-datetime


【解决方案1】:

这段代码没有错:

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

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 2014-12-13
    • 2018-10-28
    • 2018-11-13
    相关资源
    最近更新 更多