我创建了这个函数来增加日期(对于jQuery UI Datepicker):
function addDay(date) {
var moreDay = new Date();
var decomposed = date.split("-");
var act = new Date(decomposed[2], decomposed[1], decomposed[0]);
moreDay.setDate(act.getDate()+1);
return moreDay;
}
所以,它组合日期(例如:12-06-2013(dd-mm-YYYY))并将值放入一个新的日期,然后加上一天。它有效,但月份不会改变。例如,我将函数更改为:
function addDay() {
var moreDay = new Date();
var act = new Date(2013, 7, 3);
moreDay.setDate(act.getDate()+1);
alert(moreDay);
}
它将于2013年6月4日返回..它怎么可能?
答案 0 :(得分:13)
我想我看到了什么问题。
function addDay() {
var moreDay = new Date();
var act = new Date(2013, 7, 3);
moreDay.setDate(act.getDate()+1);
alert(moreDay);
}
它将于2013年6月4日返回..它怎么可能?
您必须考虑以下几点:
new Date(2013, 7, 3)
不创建日期 03 / Jul / 2013 :
7
月实际上是八月
moreDay.setDate(act.getDate()+1)
不会使 moreDay
日期act
加上一天。因为:
date.getDate()
returns the day of the month date
变量date.setDate(int)
设置date
的天(只当天,让年份和月份保持完整)moreDay.setDate(act.getDate()+1)
语句的作用是:
moreDay
的天设置为act
天的值加一。换句话说,由于moreDay
的值为new Date()
(现在是这一天 - 现在 11 / Jun / 2013 我居住的地方),{ {1}}的日期为act
,声明评估的确如此:
3
截至2013年6月4日。
答案 1 :(得分:5)
moreDay.setDate(act.getDate()+1);
这只会增加一天。你为什么期望它也增加一个月呢?
如果您还想添加一个月,请尝试以下方法:
function addDay() {
var moreDay = new Date();
var act = new Date(2013, 7, 3);
moreDay.setMonth(act.getMonth()+1); // add one month
moreDay.setDate(act.getDate()+1); // add one day
alert(moreDay);
}
答案 2 :(得分:4)
您不清楚自己想要对自己的功能做些什么。如果您想要约会并添加一天,请尝试使用:
function addDay(date) {
var decomposed = date.split("-"),
moreDay = new Date(decomposed[2], decomposed[1] - 1, decomposed[0]);
moreDay.setDate(moreDay.getDate() + 1);
alert(moreDay);
}
请注意,在常见的dd-mm-yyyy日期中,1月为1,而定义Date
对象1月为0,因此为- 1
。
此替代方案应该比setDate
:
moreDay.setTime(moreDay.getTime() + 864e5);
或者您可以使用添加的日期直接定义Date
对象:
moreDay = new Date(decomposed[2], decomposed[1] - 1, +decomposed[0] + 1);
答案 3 :(得分:0)
一种方法:
var now = new Date();
function addDays(date,days) {
var currentDate = date.getDate();
date.setDate(currentDate + days);
alert(date);
}
addDays(now,14)