在我的应用程序中,服务器端日期验证是通过IsDate完成的,这种行为非常不一致。我使用了isValid(" USdate",DateVar),它可以很好地处理传入日期,但是当DateVar是日期时间戳时它会失败。 DateVar中的值可以是任何内容,日期,时间,日期和时间。时间甚至一些无效数据。如果我使用带有isValid的Date掩码,其行为就像isDate一样没用。我怎么能做到这一点。
答案 0 :(得分:3)
将通过请求到达的所有“日期” - 通过网址参数,表单提交,Cookie等 - 将是字符串,而不是日期。
您需要做的是计算出允许的字符串格式,并相应地验证它们。
EG:您可能认为yyyy-mm-dd
没问题,但不会接受m/d/yy
。您可以将它们作为y
,m
和d
的三个单独组件传递给它们。但是你真的不应该尝试接受任何旧格式,因为你需要为每种格式都有一个验证器,并且有一个收益递减规律:人们不会期望使用任何格式他们喜欢;他们会期待你引导他们。您还需要注意,如果您要求我输入今天的日期,我会在2015年4月5日给您。但对你来说可能代表4月5日。
考虑到各种月长和闰年规则,真正最简单,最可靠的方法是查看和输入字符串是否以可接受的格式表示日期:
yyyy-mm-dd
,则输入必须为\d{4}-\d{2}-\d{2}
。那么至少你知道字符串已经正确形成了。