问题描述
|
如何使用javascript验证用户输入日期是该月的最后一天?
解决方法
(更新:请参见底部的最后一个示例,其余部分作为背景。)
您可以在
Date
实例中添加一天,并查看月份是否发生了变化(因为JavaScript的ѭ0intelligent对象智能地修复了无效的月度值),例如:
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;
}
另一个免费示例
如果愿意,您可以在其中嵌入更多逻辑以避免创建临时日期对象,因为它实际上仅在2月才需要,其余的只是表格查找,但是上述两者的优点是它们可以推迟所有日期数学到JavaScript引擎。创建对象不会花费太多的钱。
...最后:由于JavaScript规范要求(第15.9.1.1节),一天的长度恰好为86,400,000毫秒(实际上,天的长度略有不同),因此我们可以通过添加一天来缩短上述时间:
function isLastDay(dt) {
return new Date(dt.getTime() + 86400000).getDate() === 1;
}
最后的免费示例
, 浏览器将第0天标识为上个月的最后一天
var month = 0; // January
var d = new Date(2008,month + 1,0);
alert(d); // last day in January
如此处所示:用javascript计算每月的最后一天
您可以简单地使用用户插入的月份+ 1和day = 0来检查他是否插入了该月的最后一天。
, 假设您得到了:
var month = getMonthFromUserInput();
var year = getYearFromUserInput();
这将给出该月的最后一天
new Date((new Date(year,month,1)) -1 )
请记住,第0个月是1月
, 这是可行的。
var lastday = new Date(new Date().getFullYear(),new Date().getMonth()+1,0).getDate();
希望对你有帮助。
, function isLastDayOfMonth(date){
return date.getDate() == new Date(date.getFullYear(),date.getMonth()+1,0).getDate();
}