Python 是否有允许检查24小时时间是否有效的库?

Python 是否有允许检查24小时时间是否有效的库?,python,date,datetime,time,Python,Date,Datetime,Time,我试图使用python的多个datetime库中的任何一个来检查给定的时间是否有效。该给定时间为24小时格式,有效输入的示例为2359,0000,1330,而无效输入的示例为2400,2360,2500 我想问一下,是否有更好的方法来检查输入的有效性,而不必通过字符串进行解析来单独检查 如果可能,最好使用python库 如果没有这样的库,我可以问一下在regex中应该如何做到这一点吗?需要在日期-时间场景中添加regex方法 ^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$ (

我试图使用python的多个
datetime
库中的任何一个来检查给定的时间是否有效。该给定时间为24小时格式,有效输入的示例为
2359
0000
1330
,而无效输入的示例为
2400
2360
2500

我想问一下,是否有更好的方法来检查输入的有效性,而不必通过字符串进行解析来单独检查

如果可能,最好使用python库


如果没有这样的库,我可以问一下在regex中应该如何做到这一点吗?

需要在日期-时间场景中添加regex方法

^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$ (js engine)
逻辑:

  • 第一个数字(小时)为:介于0和19之间的数字--> [0-1]?[0-9](允许使用一位数)或介于20之间的数字- 23-->2[0-3]
  • 第二个数字(分钟)始终是介于00和59之间的数字--> [0-5][0-9](不允许使用单个数字)

您可以尝试使用
time.strtime
解析它:

import time

def is_valid_time(value):
    try:
        _ = time.strptime(value, '%H%M')
    except ValueError:
        return False

    return True
您可以使用进行解析,格式为
%H%M
。如果失败,则无效

from datetime import datetime

try:
    datetime.strptime('2359', '%H%M')
    print('valid')
except ValueError:
    print('invalid')

您可能会使用正则表达式:

\b(?:[01][0-9]|2[0-3])[0-5][0-9]\b

请参阅。

为什么需要图书馆?您可以使用简单的Python代码来实现这一点:

STRTIME = "2317"

if (0 <= int(STRTIME[:2]) < 24 and 0 <= int(STRTIME[2:]) < 60):
   print("Valid")
STRTIME=“2317”

如果(0尝试将其转换为
datetime
内部
Try/except
。regex根本不是用于此的合适工具。@shx2:确切的原因是什么?相关:编写代码的速度应该比在这里问这个问题快。关于STRTIME='199'呢?我认为当一个sta标准时间已经存在。然后你可以检查字符串的长度。我觉得它简单易读。@shx2:另一方面,有人可能会说,
strtime
对于这项任务来说是过分的。而且,应用了数千次,这会使代码速度非常慢,因为它只用于像这样的简单检查。