我想在Javascript中添加5天的日期字符串:
var olddate = '23.12.2013';
olddate = olddate.split('.');
var tmpDate = new Date(olddate[2],olddate[1],olddate[0]);
tmpDate.setDate(tmpDate.getDate() + 5);
var date = (tmpDate.getDate().toString().length < 2) ? '0' +
tmpDate.getDate() : tmpDate.getDate();
var month = (tmpDate.getMonth().toString().length < 2) ? '0' +
tmpDate.getMonth() : tmpDate.getMonth();
console.log( date + '.' + month + '.'+ tmpDate.getFullYear());
此代码显示27.00.2014
而非我期望的内容:27.12.2013
。我想在String日期添加5天。为什么这个月关闭了?
答案 0 :(得分:2)
我总是创建7个函数,在JS中使用日期:addSeconds,addMinutes,addHours,addDays,addWeeks,addMonths,addYears。
您可以在此处查看示例:http://jsfiddle.net/tiagoajacobi/YHA8x/
使用方法:
var now = new Date();
console.log(now.addWeeks(3));
这是功能:
Date.prototype.addSeconds = function(seconds) {
this.setSeconds(this.getSeconds() + seconds);
return this;
};
Date.prototype.addMinutes = function(minutes) {
this.setMinutes(this.getMinutes() + minutes);
return this;
};
Date.prototype.addHours = function(hours) {
this.setHours(this.getHours() + hours);
return this;
};
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + days);
return this;
};
Date.prototype.addWeeks = function(weeks) {
this.addDays(weeks*7);
return this;
};
Date.prototype.addMonths = function (months) {
var dt = this.getDate();
this.setMonth(this.getMonth() + months);
var currDt = this.getDate();
if (dt !== currDt) {
this.addDays(-currDt);
}
return this;
};
Date.prototype.addYears = function(years) {
var dt = this.getDate();
this.setFullYear(this.getFullYear() + years);
var currDt = this.getDate();
if (dt !== currDt) {
this.addDays(-currDt);
}
return this;
};
答案 1 :(得分:1)
日期构造函数需要从0
到11
而不是1
到12
的数字月份,因此当您执行此操作时,您将停用一个月:
var olddate = '23.12.2013';
// Calculate new date
olddate = olddate.split('.');
var tmpDate = new Date(olddate[2],olddate[1],olddate[0]);
您可以通过以下方式纠正错误:
var tmpDate = new Date(+olddate[2], +olddate[1] - 1, +olddate[0]);
答案 2 :(得分:1)
非常简单的方法是使用.setDate()
var olddate = '23.12.2013';
// Calculate new date
olddate = olddate.split('.');
var tmpDate = new Date(olddate[2],olddate[1]-1,olddate[0]);
var numberOfDaysToAdd = 6;
tmpDate .setDate(tmpDate .getDate() + numberOfDaysToAdd);
但我建议您使用Moment.js。使用此功能,您可以按照自己的方式操作日期时间。
修改强>
在您的示例问题中,Javascript Date()
月份从0
开始。所以例如,如果你这样做
var abc = new Date();
console.log(abc.getMonth());
您将获得当前1月份的输出0
,而不是1
。
所以考虑到这一点,你会得到正确的结果。
答案 3 :(得分:0)
我多次使用过它:
您可以传递三个参数:
1.时间(要添加的时间)注意:您需要传递Date
而不是String
。
2.键入(您想添加“小时”或“日”或“moneth”或“年”)
3. n(您要添加多少次?默认值为1,如果类型为“小时”,则表示您要添加1小时等。)
calNByDateType : function(time, type) {
var myTime = new Date( time.valueOf() );
var n = 1;
if(arguments[2]!==undefined) {
n=arguments[2];
}
if(type==="hour") {
myTime.setHours( myTime.getHours() + n );
} else if(type==="day") {
myTime.setDate( myTime.getDate() + n );
} else if(type==="month") {
myTime.setMonth( myTime.getMonth() + n );
} else if(type==="year") {
myTime.setFullYear( myTime.getFullYear() + n );
}
return myTime;
}