js 获取季度开始日期和结束日期

本文介绍了如何使用dayjs库在JavaScript中实现获取当前季度和上一季度的起止日期,以及如何获取两个日期之间的所有日期。通过三个函数实现日期处理功能。
摘要由CSDN通过智能技术生成

1.引入 dayjs ,获取当前季度的范围

import dayjs from 'dayjs';

// 获取本季开始日期和结束日期

function getQuarterStartAndEndDate(): [string, string] {

  const date = dayjs();

  const y = date.year();

  const q = date.quarter();

  const mStart = q * 3 - 2;

  const mEnd = q * 3;

  const start = dayjs(`${y}-${mStart}`).startOf('month').format('YYYY-MM-DD');

  const end = dayjs(`${y}-${mEnd}`).endOf('month').format('YYYY-MM-DD');

  return [start, end];

}

// 使用
getQuarterStartAndEndDate()  // ['2024-04-01', '2024-06-31']

2.获取上赛季开始日期和结束日期

import dayjs from 'dayjs';

function getPreQuarterStartAndEndDate(): [string, string] {
  const date = dayjs();
  const y = date.year();
  const q = date.quarter();
  let start = '';
  let end = '';

  if (q < 2) {
    start = dayjs(`${y - 1}-${10}`)
      .startOf('month')
      .format('YYYY-MM-DD');
    end = dayjs(`${y - 1}-${12}`)
      .endOf('month')
      .format('YYYY-MM-DD');
  } else {
    const mStart = (q - 1) * 3 - 2;
    const mEnd = (q - 1) * 3;
    start = dayjs(`${y}-${mStart}`).startOf('month').format('YYYY-MM-DD');
    end = dayjs(`${y}-${mEnd}`).endOf('month').format('YYYY-MM-DD');
  }

  return [start, end];
}

// 示例
getPreQuarterStartAndEndDate()  // ['2024-01-01', '2024-03-31']

3.获取两个日期之间的所有日期

import dayjs from 'dayjs';

/**
 * 获取两个日期之间的所有日期
 * @param start - 开始时间 格式:"YYYY-MM-DD"
 * @param end - 结束时间 格式:"YYYY-MM-DD"
 * @return string[]
 */

function getDateRange(start: string, end: string): string[] {
  let startDate = dayjs(start); // 开始时间
  const endDate = dayjs(end); // 结束时间

  if (!start || !end || startDate.isAfter(endDate)) {
    return [];
  }

  const dateRange: string[] = [];

  while (startDate.isBefore(endDate) || startDate.isSame(endDate)) {
    dateRange.push(startDate.format('YYYY-MM-DD'));
    startDate = startDate.add(1, 'day');
  }

  return dateRange;
}


// 示例
getDateRange('2024-01-01','2024-01-03') // ['2024-01-01', '2024-01-02', '2024-01-03']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值