使用 Date() 比较 2017 年的日期会导致错误
Using Date() to compare a date from 2017 causes error
从用户那里获取 2 个日期,它可以工作,但以下情况除外:如果两个日期都在 2017 年,则错误消息会在显然不应该显示的时候显示。
我手动将 2016 年更改为 2017 年以查看是否有所不同,但没有(使用 Replace
)。
这是验证码:
todays_date = Date()
todays_date = Replace(todays_date, "/", "-")
If m_date_01 < todays_date Or m_date_02 < todays_date Then
m_valid = False
m_message = m_message & "<li>dates cannot be in the past</li>"
End If
response.write(todays_date)
response.write(m_date_01)
response.write(m_date_02)
不要使用 <
和 >
来比较日期。有时它会起作用,但通常不会。更糟糕的是,它看起来好像在工作,从某种意义上说它没有给出错误,但结果是错误的。在您的情况下,您几乎肯定会得到错误的结果,因为您所谓的日期实际上是字符串,而字符串比较的工作方式与日期比较完全不同。 (例如,如果您将“9-15-2016”、“1-15-2017”和“12-15-2016”排序为字符串,您将得到一月,然后是 12 月,然后是 9 月。)
相反,请使用 IsDate()
来确保您实际使用的是有效日期 1,然后使用 DateDiff("d", date1, date2)
来确定哪个日期更晚.如果 date1
比 date2
大(晚出现),结果将小于 0。(您可以使用您想要的任何间隔,但是 "d"
可能是 "number of days"最有用的。)
1 如果您正在处理用户输入,这一点尤其重要:即使我们忽略了恶意意图的问题,人们也有,嗯,有趣 关于如何写日期的想法。
从用户那里获取 2 个日期,它可以工作,但以下情况除外:如果两个日期都在 2017 年,则错误消息会在显然不应该显示的时候显示。
我手动将 2016 年更改为 2017 年以查看是否有所不同,但没有(使用 Replace
)。
这是验证码:
todays_date = Date()
todays_date = Replace(todays_date, "/", "-")
If m_date_01 < todays_date Or m_date_02 < todays_date Then
m_valid = False
m_message = m_message & "<li>dates cannot be in the past</li>"
End If
response.write(todays_date)
response.write(m_date_01)
response.write(m_date_02)
不要使用 <
和 >
来比较日期。有时它会起作用,但通常不会。更糟糕的是,它看起来好像在工作,从某种意义上说它没有给出错误,但结果是错误的。在您的情况下,您几乎肯定会得到错误的结果,因为您所谓的日期实际上是字符串,而字符串比较的工作方式与日期比较完全不同。 (例如,如果您将“9-15-2016”、“1-15-2017”和“12-15-2016”排序为字符串,您将得到一月,然后是 12 月,然后是 9 月。)
相反,请使用 IsDate()
来确保您实际使用的是有效日期 1,然后使用 DateDiff("d", date1, date2)
来确定哪个日期更晚.如果 date1
比 date2
大(晚出现),结果将小于 0。(您可以使用您想要的任何间隔,但是 "d"
可能是 "number of days"最有用的。)
1 如果您正在处理用户输入,这一点尤其重要:即使我们忽略了恶意意图的问题,人们也有,嗯,有趣 关于如何写日期的想法。