在 JavaScript 中增加给定日期
在本文中,我们将讨论如何使用 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 库,但这会给程序增加不必要的复杂性。