Coldfusion 日期时间戳的服务器端验证

Coldfusion 日期时间戳的服务器端验证,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,在我的应用程序中,服务器端日期验证是通过IsDate完成的,这在行为上非常不一致。我使用了isValid(“USdate”,DateVar),它可以很好地处理传入日期,但当DateVar是一个日期时间戳时,它会失败。DateVar中的值可以是任何内容,日期、时间、日期和时间,甚至是一些无效数据。如果将日期掩码与isValid一起使用,则其行为类似于isDate,没有任何用处。我怎样才能做到这一点 所有通过请求到达的“日期”——无论是通过URL参数、表单提交、cookie等——都将是字符串,而不是

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

所有通过请求到达的“日期”——无论是通过URL参数、表单提交、cookie等——都将是字符串,而不是日期

您需要做的是确定允许哪些字符串格式,并相应地验证它们

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

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

  • 验证格式掩码,例如:如果您正在接受
    yyyy-mm-dd
    ,则需要输入。那么至少你知道字符串已经正确地形成了
  • 然后从字符串中提取组件,并尝试使用它们创建日期对象。如果没有错误:没关系
  • 最后:检查日期需要落在/超出的任何日期边界
所有通过请求到达的“日期”——无论是通过URL参数、表单提交、cookie等——都将是字符串,而不是日期

您需要做的是确定允许哪些字符串格式,并相应地验证它们

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

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

  • 验证格式掩码,例如:如果您正在接受
    yyyy-mm-dd
    ,则需要输入。那么至少你知道字符串已经正确地形成了
  • 然后从字符串中提取组件,并尝试使用它们创建日期对象。如果没有错误:没关系
  • 最后:检查日期需要落在/超出的任何日期边界
所有通过请求到达的“日期”——无论是通过URL参数、表单提交、cookie等——都将是字符串,而不是日期

您需要做的是确定允许哪些字符串格式,并相应地验证它们

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

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

  • 验证格式掩码,例如:如果您正在接受
    yyyy-mm-dd
    ,则需要输入。那么至少你知道字符串已经正确地形成了
  • 然后从字符串中提取组件,并尝试使用它们创建日期对象。如果没有错误:没关系
  • 最后:检查日期需要落在/超出的任何日期边界
所有通过请求到达的“日期”——无论是通过URL参数、表单提交、cookie等——都将是字符串,而不是日期

您需要做的是确定允许哪些字符串格式,并相应地验证它们

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

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

  • 验证格式掩码,例如:如果您正在接受
    yyyy-mm-dd
    ,则需要输入。那么至少你知道字符串已经正确地形成了
  • 然后从中提取组件