我有以下代码(缩短),它在循环数组时创建一个月的日期。
到目前为止,此工作正常,但如果达到一个月的最后一天,我正在努力停止。
我使用它来动态地将表行添加到HTML表中,并且当数组设置为31时结束时,它总是从设置月份少于31天的下个月开始。然后我表中的单元格显示例如... {2}专栏的28, 29, 1, 2
。
有人可以告诉我如何检查day1
,day2
或day3
是否是该月的最后一天,是否将其设置为''?
我的想法是,以下内容会给我一个月的最后一天,但我找不到办法在这里工作并正确使用它进行比较:
var d = new Date(y, m+1, 0);
我的JS(缩写):
$('#btnStart').on('click', function(){
var date1, day1;
var date2, day2;
var d = 0;
var m = 0; // user input
var y = 2015; // user input
for (d = 0; d <= 30; d++) {
date1 = new Date(y, m, d+1);
day1 = date1.getDate();
date2 = new Date(y, m+1, d+1);
day2 = date2.getDate();
}
});
更新:这仅在特定年份内需要,因此永远不会从12月到1月。
非常感谢您对此提供的任何帮助, 麦克
答案 0 :(得分:3)
如果您在日期中添加一天,并且结果日期是下个月的第一天,则检查日期是其当月的最后一天。
类似
isLast = (new Date(examinedDate.getTime() + 24*60*60*1000).getDate()) === 1
答案 1 :(得分:1)
在For循环中添加
if(day2 < day1)
break;
答案 2 :(得分:1)
或许有一个简单的功能:
function isLastDay(y, m, d)
{
var d1 = (m < 11) ? new Date(y, m + 1, 0) : new Date(y, 0, 0);
var d2 = new Date(y, m, d);
return (d1.getTime() === d2.getTime());
}
答案 3 :(得分:1)
您应该使用date.getTime()来比较日期。
使用示例代码运行jsbin:
http://jsbin.com/puhuvirize/2/edit?js,output
这将为您提供月份'm'的最后一天:
new Date(y, m + 1, 0)