You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 -

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:07:46