取周相关js

//获取日期所在周数
function getWeekNum(dt) {
  if(typeof dt == "string"){
      dt = new Date(dt);
  }
  let curDt = new Date(dt);
  let YearFirstDt = new Date(dt.getFullYear(), 0, 1,23,59,59);

  let divDay = YearFirstDt.getDay();
  YearFirstDt.setDate(YearFirstDt.getDate() - divDay);
  // console.log(YearFirstDt);
  let rq = curDt - YearFirstDt;
  // rq 当天天数
  let days = Math.ceil(rq / (24 * 60 * 60 * 1000));
  let week = Math.ceil(days / 7);

  return week;
}
//获取某年某周的开始日期
function getBeginDateOfWeek(paraYear, weekIndex) {
  var firstDay = getFirstDayOfYear(paraYear);
  //7*24*3600000 是一星期的时间毫秒数,(JS中的日期精确到毫秒)
  var time = (weekIndex - 1) * 7 * 24 * 3600000;
  var beginDay = firstDay;
  //为日期对象 date 重新设置成时间 time
  beginDay.setTime(firstDay.valueOf() + time);
  return formatDate(beginDay);
}
//获取某年某周的结束日期
function getEndDateOfWeek(paraYear, weekIndex) {
  var firstDay = getFirstDayOfYear(paraYear);
  //7*24*3600000 是一星期的时间毫秒数,(JS中的日期精确到毫秒)
  var time = (weekIndex - 1) * 7 * 24 * 3600000;
  var weekTime = 6 * 24 * 3600000;
  var endDay = firstDay;
  //为日期对象 date 重新设置成时间 time
  endDay.setTime(firstDay.valueOf() + weekTime + time);
  return formatDate(endDay);
}
//获得当前日期上周的开始日期
function getLastWeekStartDate() {
  var now = new Date(); //当前日期
  var nowDayOfWeek = now.getDay()-1; //今天本周的第几天
  var nowDay = now.getDate(); //当前日
  var nowMonth = now.getMonth(); //当前月
  var nowYear = now.getYear(); //当前年
  var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 7);
  return formatDate(weekStartDate);
}
//获得当前日期上周的结束日期
function getLastWeekEndDate() {
  var now = new Date(); //当前日期
  var nowDayOfWeek = now.getDay()-1; //今天本周的第几天
  var nowDay = now.getDate(); //当前日
  var nowMonth = now.getMonth(); //当前月
  var nowYear = now.getYear(); //当前年
  var weekEndDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 1);
  return formatDate(weekEndDate);
}
//日期格式化
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);
}

以下创建一个js文件


/**
 * 获取特定 (日期) ,所在的 年、月、周 的 [起始日期, 终止日期]
 *
 * @param   {enum}
 * @param   {Date}          default: now()
 * @return  {Array}         [FromData, ToData]
 */
 function GetFromToTime(eType, dt = undefined) {
    if (dt === undefined) dt = new Date();
    let validCase = ["本周", "上周", "本月", "上月"];
    let funs = [
      () => { //无效输入参数
        return [undefined, undefined];
      },
      (dt) => {
        return GetFirstDayInYearFromWeek(GetWeekInYearFromDay(dt));
      }, //本周
      (dt) => {
          let curWeek = GetWeekInYearFromDay(dt) - 1;          
          if(curWeek == 0){
             let year = dt.getFullYear() - 1;
             return GetFirstDayInYearFromWeek(GetWeekInYearFromDay(new Date(year,11,31)),year);
          }
          return GetFirstDayInYearFromWeek(curWeek);
      }, //上周
      (dt) => {
        return [
          new Date(dt.getFullYear(), dt.getMonth(), 1),
          new Date(dt.getFullYear(), dt.getMonth() + 1, 0),
        ];
      }, //本月
      (dt) => {
        return [
          new Date(dt.getFullYear(), dt.getMonth() - 1, 1),
          new Date(dt.getFullYear(), dt.getMonth(), 0),
        ];
      }, //上月
    ];
    let index = validCase.indexOf(eType);
    // console.log(funs[index+1](dt),'czzczczczczczczczcczc');
    return funs[index+1](dt);
  }
  function GetWeekInYearFromDay(dt) {
    if(typeof dt == "string"){
        dt = new Date(dt);
    }
    let curDt = new Date(dt);
    let YearFirstDt = new Date(dt.getFullYear(), 0, 1);
  
    let divDay = YearFirstDt.getDay();
    YearFirstDt.setDate(YearFirstDt.getDate() - divDay);
    // console.log(YearFirstDt);
    let rq = curDt - YearFirstDt;
    // rq 当天天数
    let days = Math.ceil(rq / (24 * 60 * 60 * 1000));
    let week = Math.ceil(days / 7);
  
    return week;
  }
  /**
   * 获取(year)年中第(week)周 [起始日期, 终止日期]
   */
  function GetFirstDayInYearFromWeek(week, year = undefined) {
    week = week - 1;
    if (year === undefined) year = new Date().getFullYear();
    let YearFirstDt = new Date(year, 0, 1);
    let divDay = YearFirstDt.getDay();
    let FromDt = new Date(YearFirstDt); 
    FromDt.setDate(YearFirstDt.getDate() + week * 7 - divDay + 1);
    let ToDt = new Date(YearFirstDt);
    ToDt.setDate(YearFirstDt.getDate() + (week + 1) * 7 - divDay);
    if (FromDt.getFullYear() != year) FromDt = new Date(year, 0, 1);
    if (ToDt.getFullYear() != year) ToDt=new Date(year, 11, 31);
    return [FromDt, ToDt];
  }



  export default {
    GetFromToTime,
    GetFirstDayInYearFromWeek,
    GetWeekInYearFromDay
  }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值