如何验证用户输入日期是本月的最后一天使用
javascript?
解决方法
(更新:请参阅底部的最后一个例子,其余的作为背景留下)
您可以向Date实例添加一天,并查看月份是否更改(因为JavaScript的Date对象智能地修复了无效的日期月份值),例如:
function isLastDay(dt) { var test = new Date(dt.getTime()),month = test.getMonth(); test.setDate(test.getDate() + 1); return test.getMonth() !== month; }
…或正如paxdiablo所指出的那样,您可以检查所产生的日期,这可能更快(一个更少的函数调用),肯定有点短:
function isLastDay(dt) { var test = new Date(dt.getTime()); test.setDate(test.getDate() + 1); return test.getDate() === 1; }
Another gratuitous live example
您可以在其中嵌入更多的逻辑,以避免创建临时日期对象(如果您喜欢),因为它真的只需要在二月份,其余只是一个表查找,但上述两者的优点是他们将所有日期数学延迟到JavaScript引擎.创建对象不会太昂贵,不用担心.
…最后:由于JavaScript specification要求(第15.9.1.1节),一天正好是86,400,000毫秒(实际上是vary in length天),所以我们可以通过添加日期来使上述更短:
function isLastDay(dt) { return new Date(dt.getTime() + 86400000).getDate() === 1; }