React-Native中如何用Moment.js获取过去28天数组(无需moment-range)
不用moment-range,用Moment.js生成过去28天的数组
嘿,这事儿完全不用额外装插件!咱们直接用Moment.js的基础方法就能搞定,我给你分几种常见场景来说明:
1. 生成包含过去28天的Moment日期对象数组
如果你的需求是获取每天的moment实例(方便后续做格式化、日期比较这类操作),可以这么写:
const now = moment(); const last28Days = []; // 循环28次,每次往前推i天 for (let i = 0; i < 28; i++) { // 重点:用clone()复制当前moment对象,避免修改原now实例 const day = now.clone().subtract(i, 'days'); last28Days.push(day); } // 要是你需要从28天前到今天的顺序,反转数组就行 // last28Days.reverse();
2. 生成格式化后的日期字符串数组(比如YYYY-MM-DD)
如果需要的是可读性更强的日期字符串,直接在上面的代码里加个format()方法就好:
const now = moment(); const last28DaysFormatted = []; for (let i = 0; i < 28; i++) { const dayStr = now.clone().subtract(i, 'days').format('YYYY-MM-DD'); last28DaysFormatted.push(dayStr); } // 输出示例:["2024-05-20", "2024-05-19", ..., "2024-04-22"]
3. 生成类似你示例的数字序号数组([1,2,...28])
如果只是需要从1到28的数字数组,那更简单,不用Moment.js也能搞定:
const lastMonthArr = Array.from({ length: 28 }, (_, index) => index + 1);
小提醒:
- 千万别忘用
clone()!Moment对象是可变的,直接调用subtract会修改原对象,导致后续日期计算全部出错。 - 数组默认是从今天往28天前排列的,如果需要反过来的顺序,记得调用
reverse()。
内容的提问来源于stack exchange,提问作者r00t -
相关产品推荐
相关产品推荐

