我正在尝试将字符串规范化为日期,以便在验证时它可以验证日期数据类型。
from cerberus import Validator
from datetime import datetime
v = Validator()
v.schema = {'start_date': {'type': 'date','coerce':datetime.date}}
v.validate({'start_date': '2017-10-01'})
>>> False
但它仍然返回false。我试图使用整数,它不确定为什么日期转换不起作用。
v = Validator()
v.schema = {'amount': {'type': 'integer','coerce': int}}
v.validate({'amount': '2'})
>>> True
任何帮助都将不胜感激。
答案 0 :(得分:3)
我担心单独datetime.date
不会将字符串转换为日期值。如果你在REPL中尝试这是你得到的:
>>> datetime.date('2017-10-01')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'str'
尝试这样的事情:
from cerberus import Validator
from datetime import datetime
v = Validator()
to_date = lambda s: datetime.strptime(s, '%Y-%m-%d')
v.schema = {'start_date': {'type': 'datetime','coerce': to_date}}
v.validate({'start_date': '2017-10-01'})
>>> True
答案 1 :(得分:0)
也许使用这种方式更好:
def to_date(s):
return datetime.strptime(s, '%Y-%m-%d')