我需要能够添加1,2,5或10天到今天的日期使用jQuery。
当前回答
你可以尝试这个,不需要JQuery: timeSolver.js
例如,今天加上5天:
var newDay = timeSolver.add(new Date(),5,"day");
你也可以按小时、月等添加。 请查看更多信息。
其他回答
这是5天:
var myDate = new Date(new Date().getTime()+(5*24*60*60*1000));
你不需要JQuery,你可以用JavaScript来做,希望你得到它。
这里有一个对我有用的解决办法。
function calduedate(ndays){
var newdt = new Date(); var chrday; var chrmnth;
newdt.setDate(newdt.getDate() + parseInt(ndays));
var newdate = newdt.getFullYear();
if(newdt.getMonth() < 10){
newdate = newdate+'-'+'0'+newdt.getMonth();
}else{
newdate = newdate+'-'+newdt.getMonth();
}
if(newdt.getDate() < 10){
newdate = newdate+'-'+'0'+newdt.getDate();
}else{
newdate = newdate+'-'+newdt.getDate();
}
alert("newdate="+newdate);
}
为什么不简单地使用
function addDays(theDate, days) {
return new Date(theDate.getTime() + days*24*60*60*1000);
}
var newDate = addDays(new Date(), 5);
或者-5减去5天
Krishna Chytanya的原型解决方案非常好,但需要一个微小但重要的改进。 days参数必须解析为Integer,以避免当days是“1”这样的字符串时进行奇怪的计算。(我花了好几个小时才弄清楚我的申请出了什么问题。)
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + parseInt(days));
return this;
};
即使你不使用这个原型函数: 当使用setDate()时,一定要确保有一个Integer。
我发现JavaScript可以返回一个正确的日期,当你使用新的日期(nYear, nMonth, nDate);那个月的最后几天。 当你使用这个函数时,试着看看dDate变量的结果:
var dDate = new Date(2012, 0,34);//结果是2月3日2012
我有一个SkipDate函数来分享:
function DaysOfMonth(nYear, nMonth) {
switch (nMonth) {
case 0: // January
return 31; break;
case 1: // February
if ((nYear % 4) == 0) {
return 29;
}
else {
return 28;
};
break;
case 2: // March
return 31; break;
case 3: // April
return 30; break;
case 4: // May
return 31; break;
case 5: // June
return 30; break;
case 6: // July
return 31; break;
case 7: // August
return 31; break;
case 8: // September
return 30; break;
case 9: // October
return 31; break;
case 10: // November
return 30; break;
case 11: // December
return 31; break;
}
};
function SkipDate(dDate, skipDays) {
var nYear = dDate.getFullYear();
var nMonth = dDate.getMonth();
var nDate = dDate.getDate();
var remainDays = skipDays;
var dRunDate = dDate;
while (remainDays > 0) {
remainDays_month = DaysOfMonth(nYear, nMonth) - nDate;
if (remainDays > remainDays_month) {
remainDays = remainDays - remainDays_month - 1;
nDate = 1;
if (nMonth < 11) { nMonth = nMonth + 1; }
else {
nMonth = 0;
nYear = nYear + 1;
};
}
else {
nDate = nDate + remainDays;
remainDays = 0;
};
dRunDate = Date(nYear, nMonth, nDate);
}
return new Date(nYear, nMonth, nDate);
};