【问题标题】:ValueError: time data '24:00' does not match format '%H:%M'ValueError:时间数据“24:00”与格式“%H:%M”不匹配
【发布时间】:2014-09-27 18:20:45
【问题描述】:

我在将 24 小时制转换为 12 小时制时遇到了严重问题。

def standard_time(t):     
    t = datetime.strptime(t, "%H:%M")
    return t

当输入'24:00' 时,我们得到

ValueError: time data '24:00' does not match format '%H:%M'

我也尝试使用 %I(12 小时)而不是 %H 进行转换,但每当小时数超过 12 时就会出错:

def standard_time(t):     
    t = datetime.strptime(t, "%I:%M")
    return t

有点卡住了……

ValueError: time data '13:30' does not match format '%I:%M'

python 有简单的 24 小时到 12 小时转换器吗?理想情况下 23:00 应该输出 11:00 PM 并且 24:00 不应该抛出错误!

【问题讨论】:

  • 为什么 24:00 不应该抛出错误?那是不正确的时间。 23:59 之后是 00:00。
  • the docs %H 涵盖 00-2324:00 不是有效时间
  • 由于某种原因,我使用的 API 给了我像 00:00 - 24:00 这样的时间集......我只是假设一切都是专业的:D
  • 所以只需在您的方法中手动修复 24:00。
  • 我想知道在您的情况下“24:00”是什么意思...是第二天的午夜吗?那为什么不 day+1 00:00 呢?你的 API 很奇怪。

标签: python datetime time strptime


【解决方案1】:

您必须为24:00 提供00:00。 24 小时格式的最后计数是 23:59,之后下一个值将是 00:00

如果你有23:59,然后再增加一分钟

>>> a = datetime(1900, 1, 1, 23, 59)
>>> from datetime import timedelta
>>> a + timedelta(minutes=1)
datetime.datetime(1900, 1, 2, 0, 0)

您将获得与00:00 的下一个约会

【讨论】:

  • 谢谢你,在你的帮助下我已经解决了。
  • 太棒了!谢谢你!
猜你喜欢
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 2022-01-20
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
相关资源
最近更新 更多