JavaScript实现指定日期范围内每日列表生成

作者:键盘侠时间:2026-10-22 13:18:50浏览:464

本文介绍如何使用JavaScript的Date对象,通过解析起止时间的毫秒数,遍历生成指定日期范围内的每一天。内容涵盖时间对象的创建、月份修正、毫秒计算及格式化输出,提供完整代码示例供参考。

需求背景与准备工作

在处理业务逻辑时,有时需要获取指定时间范围内的每一天,且日期格式需符合"YYYYMMDD"的标准。这是一个基础且常见的需求,实现思路相对直接。

准备工作

JavaScript中的Date对象提供了丰富的方法,本文将主要使用以下方法:

使用new Date()构造函数可以创建Date对象,并可直接指定年、月、日等参数,例如new Date(year, month, day)。

调用getFullYear()方法可返回Date对象中的年份。

调用getMonth()方法可返回Date对象中的月份,注意其返回值范围是0到11,即从0开始计数。

调用getDate()方法可返回Date对象中的日期(天),注意其返回值从1开始计数。

调用getTime()方法可返回自1970年1月1日00:00:00(UTC)至该Date对象所表示时间的毫秒数。

解析时间范围与处理月份差异

解析指定的时间范围

假设输入的时间范围字符串格式为yyyy-mm-dd,可以通过split方法分割字符串,从而获取开始和结束时间的年、月、日信息,进而生成对应的Date对象,并获取其毫秒数值。


 let st = start.split('-');
 let et = end.split('-');
 let startTime = new Date(st[0],st[1]-1,st[2]).getTime();
 let endTime = new Date(et[0],et[1]-1,et[2]).getTime();

需要注意的是,在创建Date对象时,月份参数需要减1,因为getMonth()返回的月份是从0开始计数的。

遍历生成每日列表

获取范围内的每一天

如何知道时间范围内有那些天呢?上面有了开始和结束时间距离1970.1.1的毫秒数,每一天有24 * 60 * 60 * 1000的毫秒数,所以我们可以通过毫秒数计算出每一天


  for( let i = startTime ; i <= endTime ; ){
    res.push(formatTime(i,''));
    i += 24 * 60 * 60 * 1000;
  }

日期格式化与验证总结

格式化输出结果

对获取到的时间进行格式化,对于个位数的月份或日期需补0,并添加指定的分隔符。


function formatTime(time,spliter = '-'){
  let date = new Date(time);
  let year = date.getFullYear();
  let month = (date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1);
  let day = date.getDate() >= 10 ? date.getDate() : '0' + date.getDate();
  return `${year}${spliter}${month}${spliter}${day}
}

验证功能

需求背景与准备工作 

总结

以上内容介绍了利用JavaScript生成指定时间范围内每日列表的方法,希望能对读者有所帮助。如有任何疑问,欢迎留言,小编会及时回复。同时感谢大家的支持!

作者最新文章