如何在 JavaScript 中将星期添加到日期
在本文中,我们将学习如何轻松地将任意周数添加到 日期
JavaScript 中的对象。
1. 日期 setDate() 和 getDate() 方法
将周数添加到 日期
在 JavaScript 中:
- 使用
获取日期()
上的方法日期
获取月份的日期日期
. - 添加结果
获取日期()
至7
乘以要添加的周数。 - 调用
设置日期()
将此总和作为参数的方法。
例如:
函数 addWeeks(日期,周){
date.setDate(date.getDate() + 7 * 周); 归期;
} // 2022 年 5 月 20 日
const date = new Date('2022-05-20T00:00:00.000Z'); const newDate = addWeeks(date, 1); // 2022 年 5 月 27 日
控制台.log(newDate); // 2022-05-27T00:00:00.000Z
我们的 添加天数()
函数需要一个 日期
对象和天数作为参数添加,并返回相同 日期
对象与新添加的天数。
这 日期
获取日期()
方法返回一个介于 1 和 31 之间的数字,表示特定日期的月份中的哪一天。
这 日期
设置日期()
方法更改月份中的日期 日期
反对作为参数传递的数字。
如果您指定的数字会更改 日期
, 设置日期()
自动更新 日期
反映这一点的信息。
函数 addWeeks(日期,周){
date.setDate(date.getDate() + 7 * 周); 归期;
} // 2022 年 5 月 20 日
const date = new Date('2022-05-20T00:00:00.000Z'); const newDate = addWeeks(date, 3); // 2022 年 6 月 10 日
控制台.log(newDate); // 2022-06-10T00:00:00.000Z
加 3 周加 21 天(20 + 21 = 41 天),但 5 月只有 31 天,所以月份递增 1
这一天被设置为 10
(41 – 31)。
避免副作用
这 设置日期()
方法改变了 日期
它被调用的对象。这给我们带来了一个副作用 添加天数()
功能。避免修改传递的 日期
并创建一个纯函数,复制 日期
并打电话 设置日期()
在这个副本上,而不是在原件上。
函数 addWeeks(日期,周){
常量 dateCopy = 新日期(日期); dateCopy.setDate(dateCopy.getDate() + 7 * 周); 返回日期复制;
} const date = new Date('2022-05-20T00:00:00.000Z'); const newDate = addWeeks(date, 3); 控制台.log(newDate); // 2022-06-10T00:00:00.000Z //原始未修改
控制台日志(日期); // 2022-05-20T00:00:00.000Z
不修改外部状态的函数(即纯函数)往往更容易预测和推理,因为它们总是为特定输入提供相同的输出。这使得限制代码中副作用的数量成为一种很好的做法。
2. date-fns addWeeks() 函数
或者,您可以使用纯 addWeeks()
从函数 日期-fns NPM 包可快速增加数周 日期
.它的工作原理类似于我们的 addWeeks()
功能。
从“日期-fns”导入 { addWeeks }; const date = new Date('2022-05-20T00:00:00.000Z'); const newDate = addWeeks(date, 3); 控制台.log(newDate); // 2022-06-10T00:00:00.000Z //原始未修改
控制台日志(日期); // 2022-05-20T00:00:00.000Z
最初发表于 编码beautydev.com
JavaScript 所做的每一件疯狂的事
关于 JavaScript 的细微警告和鲜为人知的部分的迷人指南。
注册 并立即获得免费副本。
更多内容在 ** 纯英语.io** .注册我们的 ** 免费每周通讯** .跟着我们 ** 推特** , ** 领英** ** , ** YouTube** ** , 和 __不和谐 ** .** 对增长黑客感兴趣?查看 ** 电路** ** .**
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/30300/32271208
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/288962.html