服务器端验证DateTime Stamp

时间:2015-05-04 06:59:07

标签: coldfusion coldfusion-9

在我的应用程序中,服务器端日期验证是通过IsDate完成的,这种行为非常不一致。我使用了isValid(" USdate",DateVar),它可以很好地处理传入日期,但是当DateVar是日期时间戳时它会失败。 DateVar中的值可以是任何内容,日期,时间,日期和时间。时间甚至一些无效数据。如果我使用带有isValid的Date掩码,其行为就像isDate一样没用。我怎么能做到这一点。

1 个答案:

答案 0 :(得分:3)

将通过请求到达的所有“日期” - 通过网址参数,表单提交,Cookie等 - 将是字符串,而不是日期。

您需要做的是计算出允许的字符串格式,并相应地验证它们。

EG:您可能认为yyyy-mm-dd没问题,但不会接受m/d/yy。您可以将它们作为ymd的三个单独组件传递给它们。但是你真的不应该尝试接受任何旧格式,因为你需要为每种格式都有一个验证器,并且有一个收益递减规律:人们不会期望使用任何格式他们喜欢;他们会期待你引导他们。您还需要注意,如果您要求我输入今天的日期,我会在2015年4月5日给您。但对你来说可能代表4月5日。

考虑到各种月长和闰年规则,真正最简单,最可靠的方法是查看和输入字符串是否以可接受的格式表示日期:

  • 验证格式掩码,例如:如果您接受yyyy-mm-dd,则输入必须为\d{4}-\d{2}-\d{2}。那么至少你知道字符串已经正确形成了。
  • 然后从字符串中提取组件,并尝试使用它们创建日期对象。如果没有错误:没关系。
  • 最后:检查日期需要落入的任何日期边界。