如何验证输入日期是否为 yyyy-mm-ddTHH:mm:ss.fffZ 格式?

How to validate if an input date is in yyyy-mm-ddTHH:mm:ss.fffZ format?

我想验证输入日期的格式是否为“yyyy-mm-ddTHH:mm:ss.fffZ”。你能建议我如何验证日期吗?

示例:2021-04-16T02:30:00.234Z

def validate_date(date):
    #code which will validate the date

您可以根据正则表达式检查字符串:

import re

def check_format(datestring, _pat=re.compile("[0-9]{4}-[0-9]{2}-[0-9]{2}T([0-9]{2}:){2}[0-9]{2}.[0-9]{3}Z")):
    # "yyyy-mm-ddTHH:mm:ss.fffZ"
    return re.match(_pat, datestring)

如果您想确保它是 有效 date/time,请解析它:

from datetime import datetime

def valid_date(datestring):
    if check_format(datestring):
        try:
            return datetime.fromisoformat(datestring.replace('Z', '+00:00'))
        except ValueError:
            return False # invalid date/time string
    return False # unaccepted format

..并测试它:

for d in ("2021-01-01T00:00:00.000Z",       # ok
          "2021-01-01Z00:00:00.000T",       # nok
          "2021-01-01T00:00:00.000000Z",    # nok
          "2021-01-01T00:00:00.000+00:00"): # nok
    print(d, "->", valid_date(d))