JavaScript 增加日期对象
示例
为了增加Javascript中的日期对象,我们通常可以这样做:
var checkoutDate = new Date(); //2016年7月21日星期四10:05:13GMT-0400(EDT) checkoutDate.setDate( checkoutDate.getDate() + 1 ); console.log(checkoutDate); //2016年7月22日星期五10:05:13GMT-0400(EDT)
可以使用setDate大于当前月天数的值来将日期更改为下个月的某天-
var checkoutDate = new Date(); //2016年7月21日星期四10:05:13GMT-0400(EDT) checkoutDate.setDate( checkoutDate.getDate() + 12 ); console.log(checkoutDate); //2016年8月2日星期二10:05:13GMT-0400(EDT)
这同样适用于其他的方法,如getHours(),getMonth()等。
增加工作日
如果您希望增加工作日(在这种情况下,我假设是星期一至星期五),则可以使用该setDate功能,尽管您需要一些额外的逻辑来说明周末(显然这不会考虑国定假日)-
function addWorkDays(startDate, days) { //以数字的形式获取星期几(0=星期日,1=星期一,....6=星期六) var dow = startDate.getDay(); var daysToAdd = days; //如果当前日期是星期日,则添加一天 if (dow == 0) daysToAdd++; //如果开始日期加上其他日期在最接近的星期六或之后,则计算周末 if (dow + daysToAdd >= 6) { //从工作日中减去当前工作周中的天数 var remainingWorkDays = daysToAdd - (5 - dow); //添加当前工作周的周末 daysToAdd += 2; if (remainingWorkDays > 5) { //通过计算包括多少周,为每个工作周增加两天 daysToAdd += 2 * Math.floor(remainingWorkDays / 5); //如果剩余的WorkDays解析为确切的星期数,则排除最后一个周末 if (remainingWorkDays % 5 == 0) daysToAdd -= 2; } } startDate.setDate(startDate.getDate() + daysToAdd); return startDate; }