首页 > 解决方案 > 检查日期时间格式在 Python 中是否有效

问题描述

我的问题如下:我希望我的程序的用户可以定义他将使用的日期时间格式'%Y-%m-%d',例如'%Y-%m-%d %H:%M:%S'(有关更多日期时间格式,请参阅https://docs.djangoproject.com/en/3.0/ref/settings /#datetime-input-formats)。

我想验证用户的输入,但我不知道(也许使用正则表达式,但很难想到所有的可能性)。

例如%ASD-%m-%d不应该被允许,'%Y-%m-%d %H:%M:%S'是的。


我在 Internet 上看到的所有示例都以特定日期时间格式验证日期时间,但我不这样做,我想验证日期时间格式本身。

标签: pythondatetime

解决方案


唯一不是有效日期时间格式的文本是一个 % 紧跟非法字符的文本。法律格式说明符列表可在您提供链接的页面上找到。

LEGAL_SPECS = "aAwdbBmyYHIpMSfzZjUWCxX%GuV"
if re.search(f"(^|[^%])(%%)*%[^{LEGAL_SPECS}]", format): # Invalid

PS 正则表达式正确地报告'%%X'%自身被转义的情况。


推荐阅读