我创建了这个函数来增加日期(对于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;
}
Run Code Online (Sandbox Code Playgroud)
因此,它组合日期(例如: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);
}
Run Code Online (Sandbox Code Playgroud)
并且它将于2013年6月4日返回..它怎么可能?
acd*_*ior 13
我想我看到了什么麻烦.
function addDay() {
var moreDay = new Date();
var act = new Date(2013, 7, 3);
moreDay.setDate(act.getDate()+1);
alert(moreDay);
}
Run Code Online (Sandbox Code Playgroud)
并且它将于2013年6月4日返回..它怎么可能?
您必须考虑以下几点:
new Date(2013, 7, 3)并没有创建之日起03 /七月/ 2013:
7实际上是八月.moreDay.setDate(act.getDate()+1) 不会使 moreDay日期act加一天.因为:
date.getDate() 返回日当月的的date变量date.setDate(int)设置一天的date(仅仅一天,留下的年份和月份完好)moreDay.setDate(act.getDate()+1)作用是:
moreDay的一天的价值act的一天加一.换句话说,就像moreDay's的价值new Date()(现在是当天 - 现在是我生活的2013年6月11日),act当天就是3,声明评估的确是:
Step #1: moreDay.setDate( act.getDate() + 1 );
Step #2: moreDay.setDate( (03/Aug/2013).getDate() + 1 );
Step #3: moreDay.setDate( 03 + 1 );
Step #4: moreDay.setDate( 4 );
Step #5: (11/Jun/2013).setDate( 4 );
Step #6: (04/Jun/2013)
Run Code Online (Sandbox Code Playgroud)
截至2013年6月4日.
moreDay.setDate(act.getDate()+1);
Run Code Online (Sandbox Code Playgroud)
这只会增加一天.你为什么期望它也增加一个月?
如果您还想添加一个月,请尝试以下操作:
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);
}
Run Code Online (Sandbox Code Playgroud)
不清楚你想用你的函数做什么。如果您想约会并添加一天,请尝试以下操作:
function addDay(date) {
var decomposed = date.split("-"),
moreDay = new Date(decomposed[2], decomposed[1] - 1, decomposed[0]);
moreDay.setDate(moreDay.getDate() + 1);
alert(moreDay);
}
Run Code Online (Sandbox Code Playgroud)
请注意,在常见的 dd-mm-yyyy 日期中,一月是 1,而定义Date对象一月是 0,因此- 1.
这种替代方法应该比setDate:
moreDay.setTime(moreDay.getTime() + 864e5);
Run Code Online (Sandbox Code Playgroud)
或者您可以Date直接添加一天来定义您的对象:
moreDay = new Date(decomposed[2], decomposed[1] - 1, +decomposed[0] + 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21422 次 |
| 最近记录: |