如果我的日期为2011-01-02
而且我从该日期开始减去7
天,它应该会给我2010-12-26
,但它会给我2011-01-26
?
请参阅下面的JS以验证链接:
var date = new Date('2011','01','02');
alert('the original date is '+date);
var newdate = new Date(date);
newdate = newdate.setDate(newdate.getDate() - 7);
var nd = new Date(newdate);
alert('the new date is '+nd);
答案 0 :(得分:20)
我认为你打算这样做:(完美地工作)
var date = new Date('2011','01','02');
alert('the original date is '+date);
var newdate = new Date(date);
newdate.setDate(newdate.getDate() - 7);
var nd = new Date(newdate);
alert('the new date is '+nd);
答案 1 :(得分:4)
getDate()
和setDate()
都只是指该日期的某一天。为了减去7
天你想要这样做:
myDate.setDate( myDate.getDate() - 7 );
这会将当月的日期设置为月份减去7。如果您最终使用负数,则会回到上个月。
答案 2 :(得分:2)
.getDate()仅返回月中的某一天,而.setDate()仅设置月份的日期,而不是日期。
尝试
var date = new Date('2011','01','02');
alert('the original date is '+date);
var newdate = new Date(date.getTime() - 604800000);
alert('the new date is '+newdate);
答案 3 :(得分:0)
这是因为setDate
方法仅假设来设置月中的某一天
答案 4 :(得分:0)
function subdur(action,days){
switch (action){
case 'Add':
addDays.call(this,days);
break;
case 'Sub':
rmvDays.call(this,days)
break;
default:
return false;
}
function addDays(days){
this.setDate(this.getDate()+days)
};
function rmvDays(days){
this.setDate(this.getDate()-days);
};
}
}
var d = new Date('2011','00','02');
alert(d);
d.subDuration('Add',2);
alert(d);
d.subDuration('Sub',3);
alert(d);