返回

JS实现精准获取日期范围的简单技巧

前端

获取日期范围:让代码优雅起来

在JavaScript中,我们经常需要获取一定范围内的日期,比如根据起始时间获取下个月的日期,又比如根据当前时间想获取下一年零两个月五天七时八分九秒的区间日期。

直接操作Date类进行获取简直是天灾! 难道要写一堆又臭又长的代码?当然不!下面我们就来看看利用JavaScript中的几个简单技巧轻松搞定这个问题。

一、灵活运用Date

Date是我们处理日期的一个常用类,但对于日期的跨度、范围等操作,它却没有直接的支持。所以我们需要对它进行一些灵活的运用,才能达到我们的目的。

1、获取下个月日期

以获取下个月的日期为例,我们利用DatesetDate()方法,将传入的日期加1,然后以新的日期重新生成Date对象。这样,就可以轻松获取到下个月的日期了。

// 获取下个月的日期
function getNextMonthDate(date) {
  const newDate = new Date(date);
  newDate.setDate(newDate.getDate() + 1);
  return newDate;
}

// 示例
const date = new Date('2023-03-08');
const nextMonthDate = getNextMonthDate(date);
console.log(nextMonthDate); // "2023-04-07"

2、获取指定范围日期

如果想获取指定范围的日期,比如获取从2023年3月8日到2023年4月7日的日期,那么我们可以先利用上面介绍的方法分别获取这两个日期,然后使用for循环,逐个生成中间日期即可。

// 获取指定范围日期
function getDateRange(startDate, endDate) {
  const dateRange = [];
  const currentDate = new Date(startDate);
  while (currentDate <= endDate) {
    dateRange.push(new Date(currentDate));
    currentDate.setDate(currentDate.getDate() + 1);
  }
  return dateRange;
}

// 示例
const startDate = '2023-03-08';
const endDate = '2023-04-07';
const dateRange = getDateRange(startDate, endDate);
console.log(dateRange); // ["2023-03-08", "2023-03-09", ..., "2023-04-07"]

二、巧用moment.js

如果觉得上面的代码还是有点复杂,那么我们还可以借助第三方库moment.js来轻松搞定。moment.js是一个非常强大的日期处理库,它提供了丰富的API,可以帮助我们轻松处理各种日期操作。

1、获取下个月日期

// 使用moment.js获取下个月日期
const nextMonthDate = moment('2023-03-08').add(1, 'months').format('YYYY-MM-DD');
console.log(nextMonthDate); // "2023-04-07"

2、获取指定范围日期

// 使用moment.js获取指定范围日期
const dateRange = [];
const startDate = '2023-03-08';
const endDate = '2023-04-07';
const currentDate = moment(startDate);
while (currentDate <= moment(endDate)) {
  dateRange.push(currentDate.format('YYYY-MM-DD'));
  currentDate.add(1, 'days');
}
console.log(dateRange); // ["2023-03-08", "2023-03-09", ..., "2023-04-07"]

结语

这就是JavaScript中获取日期范围的技巧,掌握了这些技巧,你就能轻松搞定各种日期处理问题。希望对你有帮助!