JS日期函数

在这里插入图片描述

 {{----}}
            <el-form-item>
              <el-date-picker
                v-model="monthRange"
                type="monthrange"
                clearable
                align="right"
                class='cellSize'
                unlink-panels
                range-separator="-"
                start-placeholder="开始月份"
                end-placeholder="结束月份"
                @change="getData(2)"
                :picker-options="pickerOptions"
                value-format="yyyy-MM-dd">
              </el-date-picker>
            </el-form-item>
            {{----}}
            <el-form-item>
              <el-date-picker
                v-model="week_value"
                type="week"
                {{--format="yyyy 第 WW 周"--}}
                :format="'yyyy 第' + cur_week +  '周'"
                @input="Dayofweek"
                value-format="yyyy-MM-dd"
                placeholder="选择周"
                :picker-options="{ firstDayOfWeek: 6 }"
                style="width: 150px"
                @change="getData(1)">
              </el-date-picker>
            </el-form-item>
 // 标准日转化为年月日
      transformTime(date){
        var dd = new Date(date);
        var y = dd.getFullYear();
        var m = dd.getMonth() + 1;
        var d = dd.getDate();
        m = m < 9 ? "0" + m : m;
        d = d < 9 ? "0" + d : d;
        return  y + "-" + m + "-" + d;
      },

      //字符串转日期格式,strDate要转为日期格式的字符串
      setDate(strDate){
        var date = eval('new Date(' + strDate.replace(/\d+(?=-[^-]+$)/,
        function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')');
        return date;
      } ,

      //获取指定日期所在周的周一的日期
      GetMonday(dd) {
        var date = new Date(dd);
        // var week = dd.getDay(); //获取时间的星期数
        var week = new Date(date).getDay(); //获取时间的星期数
        var minus = week ? week - 1 : 6;
        date.setDate(date.getDate() - minus); //获取minus天前的日期
        var y = date.getFullYear();
        var m = date.getMonth() + 1; //获取月份
        var d = date.getDate();
        return y + "-" + m + "-" + d;
      },

      //获取指定日期所在周的上周六的日期
      GetSaturday(dd) {
        //获取时间段
        var date = new Date(dd);
        //获取日期字符串对应的时间戳
        var timestamp = new Date(date).getTime();
        //获取星期几
        var currentDay = new Date(date).getDay();
        //获取时间戳
        var previousSaturdayTime;
        if (currentDay == 0) {
          //获取该天前一个星期六的时间戳
          previousSaturdayTime = timestamp- 24 * 60 * 60 * 1000;
        } else {
          //获取该天前一个星期六的时间戳
          previousSaturdayTime = timestamp - (currentDay + 1) * 24 * 60 * 60 * 1000;
        }
        var saturdayTime = new Date(previousSaturdayTime);
        let saturdayYear = saturdayTime.getFullYear();
        let saturdayMonth = saturdayTime.getMonth() + 1;
        let saturdayDay = saturdayTime.getDate();
        saturdayMonth = saturdayMonth >= 10 ? saturdayMonth : '0' + saturdayMonth;
        saturdayDay = saturdayDay >= 10 ? saturdayDay : '0' + saturdayDay;
        let lastSatDay = saturdayYear+'-'+saturdayMonth+'-'+saturdayDay;
        return lastSatDay
      },

      Dayofweek(){
        let Saturday = this.GetSaturday(this.week_value); //周六日期
        let curweek = this.getWeek(Saturday) ;
        this.cur_week = curweek;
      },

      getWeek(dt) {
        let d1 = new Date(dt);
        let d2 = new Date(dt);
        d2.setMonth(0);
        d2.setDate(1);//3 周一为本周第一天;2 周日为本周第一天;1 周六为本周第一天
        let rq = d1 - d2;
        let days = Math.ceil(rq / (24 * 60 * 60 * 1000));
        let num = Math.ceil(days / 7);
        return num + 1;
      },
//实现方法
      dateToMs (date) {
        let result = new Date(date).getTime();
        return result;
      },

      msToDate (msec) {
        let datetime = new Date(msec);
        let year = datetime.getFullYear();
        let month = datetime.getMonth();
        let date = datetime.getDate();
        let hour = datetime.getHours();
        let minute = datetime.getMinutes();
        let second = datetime.getSeconds();

        let result1 = year +
          '-' +
          ((month + 1) >= 10 ? (month + 1) : '0' + (month + 1)) +
          '-' +
          ((date + 1) < 10 ? '0' + date : date) +
          ' ' +
          ((hour + 1) < 10 ? '0' + hour : hour) +
          ':' +
          ((minute + 1) < 10 ? '0' + minute : minute) +
          ':' +
          ((second + 1) < 10 ? '0' + second : second);

        let result2 = year +
          '-' +
          ((month + 1) >= 10 ? (month + 1) : '0' + (month + 1)) +
          '-' +
          ((date + 1) < 10 ? '0' + date : date);

        let result = {
          hasTime: result1,
          withoutTime: result2
        };

        return result;
      },
      //获得某月的最后一天
      getLastDay(year,month) {
        var new_year = year;    //取当前的年份
        var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定)
        if(month>12) {
          new_month -=12;        //月份减
          new_year++;            //年份增
        }
        var new_date = new Date(new_year,new_month,1);                //取当年当月中的第一天
        return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期
      },
  // 新增天数加days天
  function addDate(date, days) {
    var d = new Date(date);
    d.setDate(d.getDate() + days);
    var m = d.getMonth() + 1;
    m = m < 10 ? '0' + m : m;
    var dd = d.getDate();
    dd = dd < 10 ? '0' + dd : dd;
    return d.getFullYear() + '-' + m + '-' + dd;
  }
  //两日期相差天数
  function getDays(strDateBegin,strDateEnd){
    var Date_start = strDateBegin.split("-"); //"-" 日期分隔符
    var Date_end = strDateEnd.split("-");
    var strDateS = new Date(Date_start[0], Date_start[1], Date_start[2]).getTime();
    var strDateE = new Date(Date_end[0], Date_end[1], Date_end[2]).getTime();
    iDays = parseInt((strDateE - strDateS) / 86400000);//把相差的 毫秒 数转换为天数 (1*24*60*60 s)
    return iDays ;
  }
  // 传入时间分钟数获取到日期格式
  function timeStamp(StatusMinute) {
    var day = parseInt(StatusMinute / 60 / 24);
    var hour = parseInt(StatusMinute / 60 % 24);
    var min = parseInt(StatusMinute % 60);
    StatusMinute = "";
    if (day > 0) {
      StatusMinute = day + "d";
    }
    if (hour > 0) {
      StatusMinute += hour + "h";
    }
    if (min > 0) {
      StatusMinute += parseFloat(min) + "m";
    }
    //三元运算符 传入的分钟数不够一分钟 默认为0分钟,else return 运算后的StatusMinute
    return StatusMinute == "" ? "0分钟": StatusMinute;
  }

 getData(flag){
        var that = this
        if(flag == 1){
          var date = that.week_value;
          var  dd = that.setDate(date);
          var date_begin = that.GetSaturday(dd);
          var d_end = that.setDate(date_begin);
          d_end = new Date((d_end/1000+(86400*6))*1000);  //日期加6天
          var date_end = that.transformTime(d_end);
        }
        else{
          var date = that.monthRange;
          var date1 = date[0];
          var date2 = date[1];
          var d_begin = that.dateToMs(date1);
          var date_begin = that.msToDate(d_begin).withoutTime;
          var datetime = new Date(date2);
          var lastday = new Date(datetime.getFullYear(), datetime.getMonth() + 1, 0) //取月末最后一天
          var d_end = that.dateToMs(lastday);
          var date_end = that.msToDate(d_end).withoutTime;
        }

        $.ajax({
          url: "/admin/report/getProofingData",
          type: "GET",
          data : {
            date_begin : date_begin,
            date_end   : date_end,
     
          },
          dataType:'json',
          success: function (res) {
            if (res.code == 100) {
 
            }else{
     
            }
          }
        });
      },

  // 字符串是否为空
  function isNull(str){
    if (str == "") return true;
    var regu ="^[ ]+$";
    var re = new RegExp(regu);
    return re.test(str)
  }
//日期加天数的方法
  //dataStr指定日期 字符串
  //dayCount 要增加减的天数
  //flag =1为加,其他为减
  //return 增加减n天后的日期字符串
  function dateAddDays(dataStr,dayCount,flag=1) {
    var strdate = dataStr; //日期字符串
    var isdate = new Date(strdate.replace(/-/g,"/"));  //把日期字符串转换成日期格式
    if(flag == 1){
      isdate = new Date((isdate/1000 + (86400*dayCount))*1000);  //日期
    }
    else{
      isdate = new Date((isdate/1000 - (86400*dayCount))*1000);  //日期
    }
    var year = isdate.getFullYear();
    var month = isdate.getMonth() + 1;
    if (month < 10) month = "0" + month;
    var date = isdate.getDate();
    if (date < 10) date = "0" + date;
    var newDate = year + "-" + month + "-" + date;
    return newDate;
  }
  
//获取当前日期
  function get_curdate() {
    var date = new Date();
    var year = date.getFullYear(); //获取年
    var month = date.getMonth()+1;//获取月
    var day = date.getDate(); //获取当日
    if (month >= 10) {
      if (day >= 10) {
        var cur_date = year+"-"+month+"-"+day;
      }else{
        var cur_date = year+"-"+month+"-0"+day;
      }
    }else{
      if (day >= 10) {
        var cur_date = year+"-0"+month+"-"+day;
      }else{
        var cur_date = year+"-0"+month+"-0"+day;
      }
    }
    return cur_date;
  }
 // 传入时间分钟数获取 几天几小时几分,如:1天2小时15分
  function timeStamp(StatusMinute) {
    var day = parseInt(StatusMinute / 60 / 24);
    var hour = parseInt(StatusMinute / 60 % 24);
    var min = parseInt(StatusMinute % 60);
    StatusMinute = "";
    if (day > 0) {
      StatusMinute = day + "d";
    }
    if (hour > 0) {
      StatusMinute += hour + "h";
    }
    if (min > 0) {
      StatusMinute += parseFloat(min) + "m";
    }
    //三元运算符 传入的分钟数不够一分钟 默认为0分钟,else return 运算后的StatusMinute
    return StatusMinute == "" ? "0分钟": StatusMinute;
  }

  function isNull(str){
    if (str == "") return true;
    var regu ="^[ ]+$";
    var re = new RegExp(regu);
    return re.test(str)
  }
      getFirstDay(date) {
        //取月第一天
        var y = new Date(date).getFullYear(); //获取年份
        var m = new Date(date).getMonth() + 1; //获取月份
        var d = "01";
        m = m < 10 ? "0" + m : m; //月份补 0
        return [y, m, d].join("-");
      },

      getLastDay(date) {
        //取月最后一天
        var y = new Date(date).getFullYear(); //获取年份
        var m = new Date(date).getMonth() + 1; //获取月份
        var d = new Date(y, m, 0).getDate(); //获取当月最后一日
        m = m < 10 ? "0" + m : m; //月份补 0
        d = d < 10 ? "0" + d : d; //日数补 0
        return [y, m, d].join("-");
      } ,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值