在 JavaScript 中增加给定日期

javascriptweb developmentfront end technology

在本文中,我们将讨论如何使用 JavaScript 增加给定日期。首先,我们将分析并理解这是什么意思。给定一个日期 x = "05-02-2023",我们想将 y = 7 天添加到此日期并打印结果日期"12-02-2023"。作为人类,我们可以手动将 7 天添加到 2 月 5 日并获取结果。但我们需要 JavaScript 以编程方式为我们执行此操作。

我们将在本文中讨论一些可以做到这一点的技术。

使用 addDays() 函数

addDays 函数接受 2 个参数,即要增加的日期和天数。在下面的代码中,我们将在当前日期上添加 7 天,并将增加的日期打印到控制台。

示例

function addDays(date, days) {
   
   // 添加天数的函数
   var result = new Date(date);
   result.setDate(result.getDate() + days);
   return result;
}
let date = new Date();
console.log("Current date is "+date);
let incrementedDate = addDays(date, 7);
console.log("Increment date is "+incrementedDate);

输出

Current date is Tue Mar 07 2023 11:38:38 GMT+0530 
Increment date is Tue Mar 14 2023 11:38:38 GMT+0530 

使用 setDate() 和 getDate() 函数

getDate 函数返回 1 到 31 之间的整数,表示月份中的日期。然后使用 set date 函数将变量的值设置为递增日期。在这里,我们将在当前日期上添加 14 天,并将结果显示到控制台。递增的天数保存到同一个变量 "date" 中,因此不需要另一个变量。

示例

let date = new Date();
console.log("Current date is "+date);
date.setDate(date.getDate()+14);
console.log("Increment date is "+date);

输出

Current date is Tue Mar 07 2023 11:40:55 GMT+0530 
Increment date is Tue Mar 21 2023 11:40:55 GMT+0530 

用户定义函数

在这里我们将创建自己的函数,而不是使用任何内置函数来增加日期。我们首先从给定日期中提取月份、月份和年份的天数整数,并分别将它们存储为变量 d、m 和 y。然后我们将天数添加到 d 或天数变量,然后在返回时将其转换回日期格式。此函数目前在添加超过 1 个月的天数方面功能有限,但由于存在内置函数,因此可以修改或避免。

示例

function AddDays(start,days){
    var d=start.getDate();
    var m=start.getMonth()+1;
    
    //getMonth 返回月份的索引,因此添加 +1
    var y=start.getYear();
    
    //getYear 返回当前 javascript 版本中的年份减去 1900,因此下面添加了 1900
    var newDate=m+"-"+(d+days)+"-"+(y+1900);
    return new Date(newDate);
}
today=new Date();
console.log("The date today is "+today);
console.log("The date after 5 days is "+AddDays(today,5));

输出

The date today is Tue Mar 07 2023 11:43:02 GMT+0530 
The date after 5 days is Sun Mar 12 2023 00:00:00 GMT+0530 

仅添加工作日

人们经常会看到电子商务网站使用天数增量来显示预计交货时间。周日通常无法提供此交货时间。在计算预计交货日期时,必须排除周日。也可以排除公共假日。

这里将介绍如何向当前日期添加 7 个工作日

示例

function AddWorkingDays(start,days){
  
  // 检索开始日期的索引
   var d=start.getDay();
   var incrementby=days;
   if(d==0){
     
     // 0 代表星期日,如果当天是星期日则加 1 天
      incrementby++;
   }
   if (d + incrementby >= 6) {
      
    //从工作日中减去当前工作周的天数
    var remainingWorkingDays = increaseby - (5 - d);
    
    //添加当前工作周的周末
    increaseby += 2;
    if (remainingWorkingDays > 5) {
         
        //通过找出包含的周数,为每个工作周添加两天
        incrementby += 2 * Math.floor(remainingWorkingDays / 5);
        
        //如果 remainingWorkingDays 等于确切的周数,则排除最后一个周末
        if (remainingWorkingDays % 5 == 0)
        incrementby -= 2;
      }
   }
   start.setDate(start.getDate() + incrementby);
   return start;
}
var today=new Date();
console.log("Current date is "+today);
console.log("8 working days later would be "+AddWorkingDays(today,8));

输出

Current date is Tue Mar 07 2023 11:45:58 GMT+0530 
8 working days later would be Fri Mar 17 2023 11:45:58 GMT+0530 

结论

以上所有方法都允许您将天数、月份甚至年份添加到给定日期。添加工作日功能在行业中非常有用,可供电子商务平台、送货网站等使用。除了这些方法之外,我们还可以使用 Moment.js 库,但这会给程序增加不必要的复杂性。


相关文章