获取近期日期组件

组件描述:

  • formatDate:删除当前时间,输出为HH:mm:ss格式。
  • dateFormat:根据自定义格式fmt指定的计时器,例如Y-m-d表示年-月-日
  • get1stAndToday:获取最近的日期,返回格式为[昨日开始日期, 昨日结束日期]
  • getday:获取最近和今天的日期,返回[昨日日期, 今日日期]
  • 过去7天:获取过去7天的日期范围,返回[七天前日期, 昨日日期]
  • 过去30天:获取过去30天的日期范围,返回[三十天前日期, 昨日日期]
  • pastWeek:获取本周的日期范围,返回[本周开始日期, 本周结束日期]
  • pastMonth:获取本月的日期范围,返回[本月开始日期, 本月结束日期]
// 格式化日期
export function formatDate() {
    const now = new Date();
    let hour = now.getHours();
    let minute = now.getMinutes();
    let second = now.getSeconds();
    if (hour < 10) hour = '0' + hour;
    if (minute < 10) minute = '0' + minute;
    if (second < 10) second = '0' + second;
    return `${hour}:${minute}:${second}`;
  }
  
  function dateFormat(fmt, time) {
    let date = new Date(time);
    let ret;
    const opt = {
      // 年
      'Y+': date.getFullYear().toString(),
      // 月
      'm+': (date.getMonth() + 1).toString(),
      // 日
      'd+': date.getDate().toString()
      // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (const k in opt) {
      ret = new RegExp('(' + k + ')').exec(fmt);
      if (ret) {
        fmt = fmt.replace(
          ret[1],
          ret[1].length === 1 ? opt[k] : opt[k].split('').map((_, i) => i === 0 ? opt[k][0] : '0').join('')
        );
      }
    }
    return fmt;
  }
  
  // 获取昨日的日期
  export function get1stAndToday() {
    let toData = new Date(new Date().toLocaleDateString()).getTime();
    let yesterdayStart = toData - 3600 * 24 * 1000;
    let yesterdayEnd = yesterdayStart + 24 * 60 * 60 * 1000 - 1;
    let startDay1 = dateFormat('Y-m-d', yesterdayStart);
    let endDay1 = dateFormat('Y-m-d', yesterdayEnd);
    return [startDay1, endDay1];
  }
  
  // 获取昨日、今日日期
  export function getday() {
    let toData = new Date(new Date().toLocaleDateString()).getTime();
    let yesterdays = toData - 3600 * 24 * 1000;
    let yesterday = dateFormat('Y-m-d', yesterdays);
    let today = dateFormat('Y-m-d', toData);
    return [yesterday, today];
  }
  
  // 获取近7日
  export function past7Day() {
    let toData = new Date(new Date().toLocaleDateString()).getTime();
    let past7daysStart = toData - 7 * 3600 * 24 * 1000;
    let past7daysEnd = toData - 1;
    let days7Start = dateFormat('Y-m-d', past7daysStart);
    let days7End = dateFormat('Y-m-d', past7daysEnd);
    return [days7Start, days7End];
  }
  
  // 获取近30日
  export function past30Day() {
    let toData = new Date(new Date().toLocaleDateString()).getTime();
    let past30daysStart = toData - 30 * 3600 * 24 * 1000;
    let past30daysEnd = toData - 1;
    let days30Start = dateFormat('Y-m-d', past30daysStart);
    let days30End = dateFormat('Y-m-d', past30daysEnd);
    return [days30Start, days30End];
  }
  
  // 获取本周
  export function pastWeek() {
    let toData = new Date(new Date().toLocaleDateString()).getTime();
    let nowDayOfWeek = new Date().getDay();
    let weekStartData = toData - (nowDayOfWeek - 1) * 24 * 60 * 60 * 1000;
    let weekEndData = toData + (7 - nowDayOfWeek) * 24 * 60 * 60 * 1000;
    let weekStart = dateFormat('Y-m-d', weekStartData);
    let weekEnd = dateFormat('Y-m-d', weekEndData);
    return [weekStart, weekEnd];
  }
  
  // 获取本月
  export function pastMonth() {
    let year = new Date().getFullYear();
    let month = new Date().getMonth();
    let monthStartData = new Date(year, month, 1).getTime();
    let monthEndData = new Date(year, month + 1, 0).getTime() + 24 * 60 * 60 * 1000 - 1;
    let monthStart = dateFormat('Y-m-d', monthStartData);
    let monthEnd = dateFormat('Y-m-d', monthEndData);
    return [monthStart, monthEnd];
  }

使用:

引入:

import {
  get1stAndToday,
  past7Day,
  past30Day,
  pastWeek,
  pastMonth,
} from '@/utils/formValidate';

在需要获取的地方直接使用,即可获得选中的时间

    const tateData = ref([]);
    // 获取当前选中的tab时间
    const getTitleNum = (data) => {
      switch (data) {
        case 1:
          tateData.value = get1stAndToday();
          break;
        case 2:
          tateData.value = past7Day();
          break;
        case 3:
          tateData.value = past30Day();
          break;
        case 4:
          tateData.value = pastWeek();
          break;
        case 5:
          tateData.value = pastMonth();
          break;
      }
      init(tateData.value[0], tateData.value[1]);
    };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值