//传入年龄、年龄类型,返回出生日期,通过日期计算年龄类型

//传入年龄、年龄类型,返回出生日期

Date.prototype.DateAdd = function (strInterval, Number) {
  var dtTmp = this;
  switch (strInterval) {
    case 's': return new Date(Date.parse(dtTmp) + (1000 * Number));
    case 'n': return new Date(Date.parse(dtTmp) + (60000 * Number));
    case 'h': return new Date(Date.parse(dtTmp) + (3600000 * Number));
    case 'd': return new Date(Date.parse(dtTmp) + (86400000 * Number));
    case 'w': return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
    case 'q': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number * 3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
    case 'm': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
    case 'y': return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
  }
}
/* 计算两日期相差的日期年月日等 */
Date.prototype.DateDiff = function (strInterval, dtEnd) {
  var dtStart = this;
  if (typeof dtEnd == 'string')//如果是字符串转换为日期型  
  {
    dtEnd = StringToDate(dtEnd);
  }
  switch (strInterval) {
    case 's': return parseInt((dtEnd - dtStart) / 1000);
    case 'n': return parseInt((dtEnd - dtStart) / 60000);
    case 'h': return parseInt((dtEnd - dtStart) / 3600000);
    case 'd': return parseInt((dtEnd - dtStart) / 86400000);
    case 'w': return parseInt((dtEnd - dtStart) / (86400000 * 7));
    case 'm': return (dtEnd.getMonth() + 1) + ((dtEnd.getFullYear() - dtStart.getFullYear()) * 12) - (dtStart.getMonth() + 1);
    case 'y': return dtEnd.getFullYear() - dtStart.getFullYear();
  }
}


    getBirthdayByIdNO(IdNO) {
      let birthday = "";
      if (IdNO.length == 18) {
        birthday = IdNO.substr(6, 8);
        return birthday.replace(/(.{4})(.{2})/, "$1-$2-");
      } else if (IdNO.length == 15) {
        birthday = "19" + IdNO.substr(6, 6);
        return birthday.replace(/(.{4})(.{2})/, "$1-$2-");
      } else {
        return "";
      }
    },
    getSexByIdNO(IdNO) {
      if (IdNO.length == 18) {
        return IdNO.charAt(16) % 2 == 0 ? 10301002 : 10301001;
      } else if (IdNO.length == 15) {
        return IdNO.charAt(14) % 2 == 0 ? 10301002 : 10301001;
      } else {
        return "";
      }
    },
    // 改变年龄生成日期
    handleAge() {
      if (this.form.age && this.form.ageUnitId) {
        const bir = this.birAge(this.form.age, this.form.ageUnitId);
        this.$set(this.form, "birthDay", bir);
      }
    },
    //传入年龄、年龄类型,返回出生日期
    birAge(_YearAge, _YearType) {
      var CurrentDate = new Date(); //当前时间
      var _Birthday;
      if (_YearType == 10112101) {
        //年
        _Birthday = CurrentDate.DateAdd("y", _YearAge * -1);
      } else if (_YearType == 10112102) {
        //月
        _Birthday = CurrentDate.DateAdd("m", _YearAge * -1);
      } else if (_YearType == 10112103) {
        //日
        _Birthday = CurrentDate.DateAdd("d", _YearAge * -1);
      } else if (_YearType == 10112104) {
        //小时
        _Birthday = CurrentDate.DateAdd("h", _YearAge * -1);
      } else if (_YearType == 10112105) {
        //分钟
        _Birthday = CurrentDate.DateAdd("n", _YearAge * -1);
      }
      return this.fnGetReturnFormatDate(_Birthday);
    },
    fnGetReturnFormatDate(_Date) {
      var _NewDate = new Date(Date.parse(_Date.toString().replace(/-/g, "/")));
      var _NewYear = _NewDate.getFullYear();
      var _NewMonth = _NewDate.getMonth() + 1;
      var _NewDay = _NewDate.getDate();
      _NewMonth = _NewMonth * 1 >= 10 ? _NewMonth : "0" + _NewMonth;
      _NewDay = _NewDay * 1 >= 10 ? _NewDay : "0" + _NewDay;
      return _NewYear + "-" + _NewMonth + "-" + _NewDay;
    },
    fnGetYearTypeByBirthday(_BirthDay) {
      var _ReturnYear = 0,
        _ReturnTypeID = 0,
        _ReturnTypeName = 0,
        _IsDate = 0;
      var CurrentDate = new Date();
      var BirthDay = new Date(
        Date.parse(_BirthDay.toString().replace(/-/g, "/"))
      );
      var _AgeDiff = CurrentDate.DateDiff("d", BirthDay) * -1;

      if (_AgeDiff < 60) {
        _ReturnYear = _AgeDiff;
        _ReturnTypeID = 10112103;
        _ReturnTypeName = "天";
      } else {
        _AgeDiff = CurrentDate.DateDiff("y", BirthDay) * -1;

        if (CurrentDate.getMonth() < BirthDay.getMonth()) {
          _AgeDiff = _AgeDiff - 1;
        } else {
          if (
            CurrentDate.getMonth() == BirthDay.getMonth() &&
            CurrentDate.getDate() < BirthDay.getDate()
          ) {
            _AgeDiff = _AgeDiff - 1;
          }
        }
        if (_AgeDiff < 1) {
          /*
                修改日期:2016-12-19
                张坤修改当小于一年,月一样的时候的处理.(比如出生日期2015-12-20,当天日期为2016-12-19的时候)
                */
          if (CurrentDate.getMonth() == BirthDay.getMonth()) {
            _ReturnYear = "11";
            _ReturnTypeID = 10112102;
            _ReturnTypeName = "个月";
          } else {
            if (CurrentDate.getYear() == BirthDay.getYear()) {
              _ReturnYear = CurrentDate.getMonth() - BirthDay.getMonth();
            } else {
              _ReturnYear = CurrentDate.getMonth() + (12 - BirthDay.getMonth());
            }
            _ReturnTypeID = 10112102;
            _ReturnTypeName = "个月";
          }
        } else {
          _ReturnYear = _AgeDiff;
          _ReturnTypeID = 10112101;
          _ReturnTypeName = "岁";
        }
      }
      _IsDate = 1;

      var result = new Object();
      result = {
        YearOld: _ReturnYear,
        YearTypeID: _ReturnTypeID,
        YearTypeName: _ReturnTypeName,
        IsDate: _IsDate,
      };

      return result;
    },
    // 通过日期获取年龄
    handleBirthDay() {
      if (this.form.birthDay) {
        const c = this.fnGetYearTypeByBirthday(this.form.birthDay);
        this.$set(this.form, "age", c.YearOld);
        this.$set(this.form, "ageUnitId", c.YearTypeID);
      }
    },
    handleCardNo() {
      if (
        /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(
          this.form.idCardNo
        )
      ) {
        const a = this.getBirthdayByIdNO(this.form.idCardNo);
        const b = this.getSexByIdNO(this.form.idCardNo);
        const c = this.fnGetYearTypeByBirthday(a);
        this.$set(
          this.form,
          "sexId",
          this.sexs.filter((item) => item.id == b)[0].id
        );
        this.$set(this.form, "birthDay", a);
        this.$set(this.form, "age", c.YearOld);
        this.$set(this.form, "ageUnitId", c.YearTypeID);
      }
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值