【问题标题】:How to validate if an input date is in yyyy-mm-ddTHH:mm:ss.fffZ format?如何验证输入日期是否为 yyyy-mm-ddTHH:mm:ss.fffZ 格式?
【发布时间】:2021-08-26 08:57:29
【问题描述】:

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

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

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

【问题讨论】:

  • 你有什么尝试吗?例如针对regex 模式进行测试?或使用strptime
  • re.search("^\d\d\d\d-(0?[1-9]|1[0-2])-(0?[1-9]|[ 12][0-9]|3[01])(T|t)(00|[0-9]|1[0-9]|2[0-3]):([0-9]|[ 0-5][0-9]):([0-9]|[0-5][0-9]).([000-999]|0[10-99]|00|[0-9 ])(Z|z)$", "2021-04-16T02:30:00.234Z")
  • @MrFuppes 我尝试了上述模式,但它不起作用

标签: python-3.x datetime datetime-format


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2014-01-18
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多