考虑31天的情况
const data = '2021-05-26'
result = ['2021-05-26','2021-05-27','2021-05-28','2021-05-29','2021-05-30','2021-05-31','2021-06-01']
考虑31天的情况
const data = '2021-05-26'
result = ['2021-05-26','2021-05-27','2021-05-28','2021-05-29','2021-05-30','2021-05-31','2021-06-01']
new Array(7).fill(1).map((n,i)=>new Date(new Date( '2021-05-26').getTime() + (1000 * 60 * 60 * 24*i)))
用 Date 偷个懒?
当然,你也可以 一三五七八十腊,三十一天永不差。四六九十一,每月三十天。然后再特殊处理一下2月。
已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。
可以考虑用 moment.js
或者 day.js
单独写一个获取函数,键入初始日期和顺延天数,循环获取日期,最后返回集合就好。
已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。
const date = "2021-05-25";
/**
* 返回后七天,由于Date类复写了Symbol.toPrimitive我们可以对其进行加减乘除
* @param {*} from 起始时间
*/
const next = (from) => {
const ans = [];
const offset = new Date("2021-05-26") - new Date("2021-05-25");
const base = new Date(date) * 1;
for (let i = 1; i <= 7; ++i) {
ans.push(base + i * offset);
}
console.log(ans);
return ans.map((v) => new Date(v).toLocaleDateString().replace(/\//g, "-"));
};
console.log(next(date));
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
利用
Date
定位日期,主要还是格式化时间,toLocaleDateString
这个跟本地化有关,不建议使用,最好自己写一个或者用库