获取本周、本季度、本月、上月的开始日期、结束日期等封装计算时间的组件.js

功能描述

获取本周、本季度、本月、上月、最近30天,本年的开始日期、结束日期

根据年月获取某月的开始日期、结束日期

根据类型获取默认的开始日期、结束日期 getDefaultTime(type)默认时间的取值规则 1上个月 2当前月 3无

完整代码

// import { parseTime } from '@/utils/index'

/**
 * 获取本周、本季度、本月、上月的开始日期、结束日期
 */
var now = new Date();                    //当前日期
var nowDayOfWeek = now.getDay();         //今天本周的第几天
var nowDay = now.getDate();              //当前日
var nowMonth = now.getMonth();           //当前月
var nowYear = now.getYear();             //当前年
nowYear += (nowYear < 2000) ? 1900 : 0;  //

var lastMonthDate = new Date();  //上月日期
lastMonthDate.setDate(1);
lastMonthDate.setMonth(lastMonthDate.getMonth()-1);
var lastYear = lastMonthDate.getYear();
var lastMonth = lastMonthDate.getMonth();

//格式化日期:yyyy-MM-dd
function formatDate(date) {
    var myyear = date.getFullYear();
    var mymonth = date.getMonth()+1;
    var myweekday = date.getDate();

    if(mymonth < 10){
        mymonth = "0" + mymonth;
    }
    if(myweekday < 10){
        myweekday = "0" + myweekday;
    }
    return (myyear+"-"+mymonth + "-" + myweekday);
}

/**
 * Parse the time to string
 * @param {(Object|string|number)} time
 * @param {string} cFormat
 * @returns {string}
 */
export function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'undefined' || time === null || time === 'null') {
    return ''
  } else if (typeof time === 'object') {
    date = time
  } else {
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
      time = parseInt(time)
    }
    if ((typeof time === 'number') && (time.toString().length === 10)) {
      time = time * 1000
    }
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return time_str
}

//今天
var getCurrentDate = new Date(nowYear, nowMonth, nowDay);
var getCurrentDate  = formatDate(getCurrentDate)

//昨天
var getYesterdayDate = new Date(nowYear, nowMonth, nowDay - 1);
var getYesterdayDate =  formatDate(getYesterdayDate);

//获得某月的天数
function getMonthDays(myMonth){
    var monthStartDate = new Date(nowYear, myMonth, 1);
    var monthEndDate = new Date(nowYear, myMonth + 1, 1);
    var   days   =   (monthEndDate   -   monthStartDate)/(1000   *   60   *   60   *   24);
    return   days;
}

//获得本季度的开始月份
function getQuarterStartMonth(){
    var quarterStartMonth = 0;
    if(nowMonth<3){
       quarterStartMonth = 0;
    }
    if(2<nowMonth && nowMonth<6){
       quarterStartMonth = 3;
    }
    if(5<nowMonth && nowMonth<9){
       quarterStartMonth = 6;
    }
    if(nowMonth>8){
       quarterStartMonth = 9;
    }
    return quarterStartMonth;
}

//获得本周的开始日期
function getWeekStartDate() {
    var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
    return formatDate(weekStartDate);
}

//获得本周的结束日期
function getWeekEndDate() {
    var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));
    return formatDate(weekEndDate);
}

//获得本月的开始日期
export function getMonthStartDate(){
    var monthStartDate = new Date(nowYear, nowMonth, 1);
    return formatDate(monthStartDate);
}

//获得本月的结束日期
function getMonthEndDate(){
    var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));
    return formatDate(monthEndDate);
}
//获得某月的开始日期
function getCertainMonthStartDate(yy,mm){
    var monthStartDate = new Date(yy, mm, 1);
    return formatDate(monthStartDate);
}

//获得某月的结束日期
function getCertainMonthEndDate(yy,mm){
    var monthEndDate = new Date(yy, mm, getMonthDays(mm));
    return formatDate(monthEndDate);
}
//获得上月开始时间
export function getLastMonthStartDate(){
    var lastMonthStartDate = new Date(nowYear, lastMonth, 1);
    return formatDate(lastMonthStartDate);
}

//获得上月结束时间
export function getLastMonthEndDate(){
    var lastMonthEndDate = new Date(nowYear, lastMonth, getMonthDays(lastMonth));
    return formatDate(lastMonthEndDate);
}

//获得本季度的开始日期
function getQuarterStartDate(){

    var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);
    return formatDate(quarterStartDate);
}

//或的本季度的结束日期
function getQuarterEndDate(){
    var quarterEndMonth = getQuarterStartMonth() + 2;
    var quarterStartDate = new Date(nowYear, quarterEndMonth, getMonthDays(quarterEndMonth));
    return formatDate(quarterStartDate);
}

// 最近30天
export function defaultLastSanShi(){
  const end = new Date()
  const start = new Date()
  start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
  return [parseTime(start),parseTime(end)]
}
// 获得本月起止时间
export function getCurrenMonthStartAndEndDate(){
  const start = getMonthStartDate()
  const end = now
  return [parseTime(start,"{y}-{m}-{d} 00:00:00"),parseTime(end,"{y}-{m}-{d} 23:59:59")];
}
// 获得上月起止时间
export function getLastMonthStartAndEndDate(){
  const start = getLastMonthStartDate()
  const end = getLastMonthEndDate()
  return [parseTime(start,"{y}-{m}-{d} 00:00:00"),parseTime(end,"{y}-{m}-{d} 23:59:59")];
}
// 获取当前年份的第一天
export function getYearFirstDay() {
  return nowYear + '-01-01'
}


// 根据年月获取某月的起止时间
export function byYearMonthGetStartAndEndDate(prm){
  console.log(prm)
  let arr=prm.split("-")
  let yy=parseInt(arr[0])
  let mm=parseInt(arr[1])-1
  const start = getCertainMonthStartDate(yy,mm)
  const end = getCertainMonthEndDate(yy,mm)
  return [parseTime(start,"{y}-{m}-{d} 00:00:00"),parseTime(end,"{y}-{m}-{d} 23:59:59")];

}
// 根据年获取某年的起止时间
export function byYearGetStartAndEndDate(prm){
  const start = prm+'-01-01'
  const end = prm+'-12-31'
  return [parseTime(start,"{y}-{m}-{d} 00:00:00"),parseTime(end,"{y}-{m}-{d} 23:59:59")];

}
// 获取默认时间
export function getDefaultTime(type){
  let _time
  //默认时间的取值规则 1上个月 2当前月 3无
  if(type=1){
    _time = getLastMonthStartAndEndDate()
  }else if(type=2){
    _time = getCurrenMonthStartAndEndDate()
  }else if(type=3){
    _time=''
  }
  return _time
}

export const defaultTime= getDefaultTime()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值