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

如何将日期区间转换为指定格式的数组?附示例

如何将日期区间转换为指定格式的数组

我来给你一个实用的JavaScript实现方案,刚好能完美匹配你想要的数组格式:

核心思路

  1. 把起始、结束日期转换成Date对象,方便后续逐天遍历操作
  2. 循环遍历日期区间内的每一天,提取出星期缩写、日期、月份缩写、年份这些信息
  3. 把每天的信息整理成指定的对象结构,依次推入结果数组

完整代码示例

function dateRangeToPeriodArray(startDateStr, endDateStr) {
  // 定义星期和月份的英文缩写映射表
  const dayAbbrs = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
  const monthAbbrs = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  
  const startDate = new Date(startDateStr);
  const endDate = new Date(endDateStr);
  const period = [];
  
  // 克隆起始日期,避免修改原日期对象
  const currentDate = new Date(startDate);
  
  while (currentDate <= endDate) {
    // 提取当前日期的各项信息
    const day = dayAbbrs[currentDate.getDay()];
    const date = currentDate.getDate().toString();
    const month = monthAbbrs[currentDate.getMonth()];
    const year = currentDate.getFullYear().toString();
    
    period.push({ day, date, month, year });
    
    // 日期往后推一天,进入下一轮循环
    currentDate.setDate(currentDate.getDate() + 1);
  }
  
  return period;
}

// 调用示例,生成你要的2020年3月1日到4月29日的数组
const period = dateRangeToPeriodArray('2020-03-01', '2020-04-29');
console.log(period);

代码细节说明

  • 缩写映射:用两个数组对应星期和月份的英文缩写,通过getDay()(返回0-6对应周日到周六)和getMonth()(返回0-11对应1-12月)的结果直接取值,简单高效
  • 循环控制:用while循环判断当前日期是否在区间内,每次循环后给日期加1天,直到遍历完所有日期
  • 格式匹配:把日期和年份转成字符串,和你要求的输出格式完全一致

小提示

  • 传入的日期字符串尽量用YYYY-MM-DD这种格式,兼容性最好,避免不同环境下的解析问题
  • 如果需要处理时区差异,可以把代码里的getDay()、getDate()等方法换成对应的UTC方法(比如getUTCDay()),保证跨时区的日期准确性

内容的提问来源于stack exchange,提问作者Pang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:32:40