Python 3中如何验证格式为2018-05-30-16-54-00的日期时间?
问题分析与解决办法
你遇到的问题很明确——代码里用的日期格式字符串和你实际传入的日期格式完全不匹配!
你的输入日期是2018-05-30-16-54-00,也就是YYYY-MM-DD-HH-MM-SS的格式,但你代码里写的%d-%b-%Y-%H-%M-%S对应的是日-英文缩写月份-年-时-分-秒(比如30-May-2018-16-54-00),这俩完全对不上,自然会触发ValueError。
咱们把代码修正一下,把格式字符串改成和输入匹配的就行:
from datetime import datetime def validate(date_text): try: # 格式字符串对应YYYY-MM-DD-HH-MM-SS datetime.strptime(date_text, '%Y-%m-%d-%H-%M-%S') except ValueError: raise ValueError("Incorrect data format, should be YYYY-MM-DD-HH-MI-SS")
这里给你拆解一下每个格式符的含义,方便你以后调整:
%Y:4位数字的年份(比如2018)%m:2位数字的月份(01-12,对应例子里的05)%d:2位数字的日期(01-31,对应例子里的30)%H:24小时制的2位小时数(00-23,对应例子里的16)%M:2位数字的分钟(00-59,对应例子里的54)%S:2位数字的秒数(00-59,对应例子里的00)
你可以测试一下:
# 正确格式,不会报错 validate("2018-05-30-16-54-00") # 错误格式,会抛出预期的ValueError validate("2018/05/30 16:54:00")
内容的提问来源于stack exchange,提问作者Punter Vicky
相关产品推荐
相关产品推荐

