gpt4 book ai didi

javascript - 如何在 Javascript 中获取每个月的指定日期?

转载 作者:数据小太阳 更新时间:2023-10-29 05:34:49 25 4
gpt4 key购买 nike

我需要找到特定日期的本月、上个月和下个月。

例如日期设置为每个月的31号,我希望得到的日期是2018-02-28、2018-03-31 和 2018-04-30。对于那些没有31的日期,比前一天。

最后生成 2 个周期,2018-02-28 到 2018-03-29,2018-03-30 到 2018-04-31。我不知道如何处理二月和小于 31 的月份。

var d = new Date();
var tyear = d.getFullYear(); //2018
var tmonth = d.getMonth(); //2
new Date(2018, tmonth-1, 31);//output 2018-03-02 not what I wanted

最佳答案

一个简单的算法就是在原来的日期上加上月份,如果新的日期不对,就设置为上个月的最后一天。保持原始日期值不变会有所帮助,例如

/* @param {Date} start - date to start
** @param {number} count - number of months to generate dates for
** @returns {Array} monthly Dates from start for count months
*/
function getMonthlyDates(start, count) {
var result = [];
var temp;
var year = start.getFullYear();
var month = start.getMonth();
var startDay = start.getDate();
for (var i=0; i<count; i++) {
temp = new Date(year, month + i, startDay);
if (temp.getDate() != startDay) temp.setDate(0);
result.push(temp);
}
return result;
}

// Start on 31 Jan in leap year
getMonthlyDates(new Date(2016,0,31), 4).forEach(d => console.log(d.toString()));
// Start on 31 Jan not in leap year
getMonthlyDates(new Date(2018,0,31), 4).forEach(d => console.log(d.toString()));

// Start on 30 Jan
getMonthlyDates(new Date(2018,0,30), 4).forEach(d => console.log(d.toString()));
// Start on 5 Jan
getMonthlyDates(new Date(2018,0,5), 4).forEach(d => console.log(d.toString()));

关于javascript - 如何在 Javascript 中获取每个月的指定日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49265311/

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