T.J*_*der 29
(更新:请参见底部的最后一个示例,但其余部分保留为背景.)
您可以向Date实例添加一天,并查看月份是否更改(因为JavaScript的Date对象会智能地修复无效的日期值),例如:
function isLastDay(dt) {
var test = new Date(dt.getTime()),
month = test.getMonth();
test.setDate(test.getDate() + 1);
return test.getMonth() !== month;
}
Run Code Online (Sandbox Code Playgroud)
...或者正如paxdiablo所指出的那样,你可以检查生成的日期,这可能更快(函数调用少一个)并且肯定会更短:
function isLastDay(dt) {
var test = new Date(dt.getTime());
test.setDate(test.getDate() + 1);
return test.getDate() === 1;
}
Run Code Online (Sandbox Code Playgroud)
你可以在那里嵌入更多的逻辑来避免创建临时日期对象,如果你喜欢它,因为它实际上只需要在二月份,其余的只是一个表查找,但上述两者的优点是他们将所有日期数学推迟到JavaScript引擎.创建对象不会太昂贵而无法担心.
......最后:由于JavaScript规范要求(第15.9.1.1节)一天的长度恰好是 86,400,000毫秒(实际上天数有点变化),我们可以通过添加日期来缩短上述时间:
function isLastDay(dt) {
return new Date(dt.getTime() + 86400000).getDate() === 1;
}
Run Code Online (Sandbox Code Playgroud)