vue3封装获取当前年、月、季度、周

1.安装moment.js

npm install moment

2.新建在utils文件夹中handleTime.js文件用于封装方法

import moment from 'moment'

// 计算当前周的开始和结束时间
export function calcNowWeek() {
  const now = moment();
  const weekNumber = now.isoWeek();

  const startWeek = now.clone().isoWeek(weekNumber).startOf('isoweek').format('YYYY-MM-DD');
  const endWeek = now.clone().isoWeek(weekNumber).endOf('isoweek').format('YYYY-MM-DD');

  return { startWeek, endWeek };
}
// 计算当前月份的开始和结束时间
export function calcNowMonth() {
  let startMonth = moment().startOf('month').format('YYYY-MM-DD');
  let endMonth = moment().endOf('month').format('YYYY-MM-DD');
  return { startMonth, endMonth }
}
// 计算当前季度的开始和结束时间
export function calcNowQuarter() {
  let index = moment().quarter();
  let year = moment().year();
  let startQuarter = moment(`${year}-${3*(index-1) +1}-01`).format('YYYY-MM-DD');
  let endQuarter = moment(`${year}-${3*index}-${new Date('2024',3*index,0).getDate()}`).format('YYYY-MM-DD');
  return { startQuarter, endQuarter }
}
// 计算当前年的开始和结束时间
export function calcNowYear() {
  let year = moment().year();
  return {
    startYear: `${year}-01-01`,
    endYear: `${year}-12-31`
  }
}
// 获取今天
export function calcToday() {
  const today = moment().format('YYYY-MM-DD');
  return today
}
// 获取昨天
export function calcYesterday() {
  const yesterday = moment().subtract(1, 'days').format('YYYY-MM-DD');
  return yesterday
}
// 获取明天
export function calcTomorrow() {
  const tomorrow = moment().add(1, 'days').format('YYYY-MM-DD');
  return tomorrow
}

// 以下是获取当前日期的一系列方法(方法2)
// 获取当周星期一
export function getMondayOfWeek(date) {
    const day = moment(date).day(); // 获取选择日期是星期几(0-6,0表示星期日)
    const diff = moment(date).date() - day + (day === 0 ? -6 : 1); // 计算星期一的日期
    const monday = moment(date).date(diff); // 创建星期一的 Moment 对象\
    return monday.format('YYYY-MM-DD'); // 返回格式为 "YYYY-MM-DD" 的字符串
}
// 获取当周星期日
export function getSundayOfWeek(selectedDate) {
    const day = moment(selectedDate).day(); // 获取选择日期是星期几(0-6,0表示星期日)
    const diff = day === 0 ? 0 : 7 - day; // 计算距离下一个星期日的天数
    const sunday = moment(selectedDate).add(diff, 'days'); // 创建星期日的 Moment 对象
    return sunday.format('YYYY-MM-DD'); // 返回格式为 "YYYY-MM-DD" 的字符串
}
// 获取当月第一天
export function getFirstDayOfMonth(selectedDate) {
    const firstDay = moment(selectedDate).startOf('month').format('YYYY-MM-DD');
    return firstDay;
}
// 获取当月最后一天
export function getLastDayOfMonth(selectedDate) {
    const lastDay = moment(selectedDate).endOf('month').format('YYYY-MM-DD');
    return lastDay;
}
// 获取当年第一天
export function getFirstDayOfYear(selectedDate) {
    const year = moment(selectedDate).year(); // 获取选择日期的年份
    const firstDayOfYear = moment(`${year}-01-01`); // 创建当年一月一号的 Moment 对象
    return firstDayOfYear.format('YYYY-MM-DD'); // 返回格式为 "YYYY-MM-DD" 的字符串
}
// 获取当年最后有一天
export function getLastDayOfYear(selectedDate) {
    const year = moment(selectedDate).year(); // 获取选择日期的年份
    const lastDayOfYear = moment(`${year}-12-31`); // 创建当年十二月最后一天的 Moment 对象
    return lastDayOfYear.format('YYYY-MM-DD'); // 返回格式为 "YYYY-MM-DD" 的字符串
}
// 获取当前季度第一天
export function getStartOfQuarter(selectedDate) {
    const year = moment(selectedDate).year(); // 获取选择日期的年份
    const quarter = Math.ceil((moment(selectedDate).month() + 1) / 3); // 计算当前季度
    const startOfQuarter = moment(`${year}-01-01`).add((quarter - 1) * 3, 'months'); // 获取当前季度的季初一号的 Moment 对象
    return startOfQuarter.format('YYYY-MM-DD'); // 返回格式为 "YYYY-MM-DD" 的字符串
}
// 获取当前季度最后一天
export function getEndOfQuarter(selectedDate) {
    const year = moment(selectedDate).year(); // 获取选择日期的年份
    const quarter = Math.ceil((moment(selectedDate).month() + 1) / 3); // 计算当前季度
    const endOfQuarter = moment(`${year}-01-01`).add(quarter * 3, 'months').subtract(1, 'days'); // 获取当前季度的最后一天的 Moment 对象
    return endOfQuarter.format('YYYY-MM-DD'); // 返回格式为 "YYYY-MM-DD" 的字符串
}

3.引入使用

import { calcNowWeek, calcNowMonth, calcNowQuarter, calcNowYear } from "@/utils/handleTime";



console.log(calcNowQuarter()) // 输出['2024-04-01','2024-06-30']

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值