首页 > 解决方案 > 如何验证输入日期是否为 yyyy-mm-ddTHH:mm:ss.fffZ 格式?

问题描述

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

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

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

标签: python-3.xdatetimedatetime-format

解决方案


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

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)

如果你想确保它是一个有效的日期/时间,解析它:

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

推荐阅读