使用 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) 来确定哪个日期更晚.如果 date1date2 大(晚出现),结果将小于 0。(您可以使用您想要的任何间隔,但是 "d" 可能是 "number of days"最有用的。)

1 如果您正在处理用户输入,这一点尤其重要:即使我们忽略了恶意意图的问题,人们也有,嗯,有趣 关于如何写日期的想法。