【问题标题】:python time format checkpython时间格式检查
【发布时间】:2009-08-24 13:36:10
【问题描述】:

在 python 中,我想检查输入字符串是否为“HH:MM”,例如 01:16 或 23:16 或 24:00。根据结果​​给出真假。

如何使用正则表达式实现这一点?

【问题讨论】:

  • 您要“两位数,冒号,两位数”还是要检查它是否实际上是合法的时间值?
  • 严格来说 '24:00' 不是有效的 'HH:MM' 字符串。 '00:00' 到 '23:59' 是。
  • 午夜是一个特例,可以同时称为“00:00”和“24:00”。符号“00:00”用于日历日的开始,使用频率更高。 ISO 8601

标签: python regex


【解决方案1】:
import re

time_re = re.compile(r'^(([01]\d|2[0-3]):([0-5]\d)|24:00)$')
def is_time_format(s):
    return bool(time_re.match(s))

匹配从 00:00 到 24:00 的所有内容。

【讨论】:

    【解决方案2】:

    不用正则表达式也可以实现:

    import time
    
    def isTimeFormat(input):
        try:
            time.strptime(input, '%H:%M')
            return True
        except ValueError:
            return False
    
    >>>isTimeFormat('12:12')
    True
    
    >>>isTimeFormat('012:12')
    False
    

    【讨论】:

    • isTimeFormat("12:0") 返回True。不是我想要的。
    【解决方案3】:

    这将为您提供将检查它的正则表达式对象。但是,根据您询问的对象,24:00 可能不是有效时间(它是 00:00)。但我想这很容易修改以满足您的需求。

    import re
    regexp = re.compile("(24:00|2[0-3]:[0-5][0-9]|[0-1][0-9]:[0-5][0-9])")
    

    【讨论】:

      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-26
        • 2020-06-04
        • 1970-01-01
        • 1970-01-01
        • 2013-02-04
        • 2023-04-03
        • 2014-05-31
        • 1970-01-01
        相关资源
        最近更新 更多