gpt4 book ai didi

javascript - 处理动态日期差异

转载 作者:行者123 更新时间:2023-12-02 14:12:42 25 4
gpt4 key购买 nike

  1. 我有一个接受持续时间的表格。这可以是一个月、一年、2 个月、20 天等。

  2. 根据此持续时间,将向在此持续时间之前 x 天生日的所有 child 发送一封电子邮件。

  3. 由于一个人出生的月份可能有 28 天、29 天、30 天或 31 天,因此计算日期差异变得很痛苦。

  4. 到目前为止,我所做的是转换月份 -> 30 天,年 -> 365 天,并以此为基础进行计算。

考虑到不同月份和闰年,处理这种动态日期差异的更优雅的方法是什么?

最佳答案

添加天、月和年相当简单。添加月份时,只需检查新月份中的日期是否与初始月份相同,如果不是,请将日期设置为 0(即,您已经滚动了一个额外的月份,因此将日期设置为上个月)。增加年份也是如此,但只会发生在二月。例如

function addMonths(date, months) {
var d = new Date(+date);
var startDate = d.getDate();
d.setMonth(d.getMonth() + months);
if (d.getDate() != startDate) d.setDate(0);
return d;
}

function addYears(date, years) {
return addMonths(date, years * 12);
}

var d = new Date(2016,4,31);
console.log(d.toLocaleString() + ' plus one month is \n' +
addMonths(d,1).toLocaleString());

d = new Date(2016,1,29);
console.log(d.toLocaleString() + ' plus one year is \n' +
addYears(d, 1).toLocaleString());

为了方便起见,您甚至可以将这些作为方法添加到 Date.prototype 中。

请注意,日期算术不一定是对称的。

关于javascript - 处理动态日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39383308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com