【问题标题】:Age 18+ Validation with Ionic & Angular issue18 岁以上的 Ionic 和 Angular 问题验证
【发布时间】:2022-01-14 09:05:24
【问题描述】:

所以,我设法让它工作,但 2004 年返回到 18 岁以下。 假设我将年份设置为 2004 年 1 月 13 日,它返回年龄为 18 岁,但也返回他们未满 18 岁。这也适用于 1 月份中满足 18 岁要求的任何一天。这是函数检查年龄和日期。在这一点上我最好的猜测可能是时区问题?

GetAge(date: string): number {
    let today = new Date();
    let birthDate = new Date(date);
    let age = today.getFullYear() - birthDate.getFullYear();
    let month = today.getMonth() - birthDate.getMonth();
    
    if (month < 0 || (month === 0 && today.getDate() < birthDate.getDate())) {
      age--;
    }
    console.log('Age: ' + age + '\nBirthday: ' + birthDate);
    return age;
  }

  AgeCheck(controlName: string): ValidatorFn {
    return (controls: AbstractControl) => {
      const control = controls.get(controlName);
      
      if (control?.errors && !control.errors['under18']) {
        return null;
      } 
  
      if (this.GetAge(control?.value) <= 18) {
        return { under18: true }
      } else {
        return null;   
      }
    }
  }

我用这个作为日期选择输入

<ion-input type="date" formControlName="dateofbirth"></ion-input>

这是 FormBuilder 的一个示例

this.credentials = this.fb.group({
      dateofbirth: ['', [Validators.required]],
    }, {validator: [this.AgeCheck('dateofbirth')]});

控制台输出截图

【问题讨论】:

    标签: node.js angular ionic-framework


    【解决方案1】:

    最好的方法是使用 Moment.js,例如:

    npm install moment --save  
    

    import * as moment from 'moment';
    
    ...
    
    age18Check(birthday: Date) {
      return moment(birthday).add(18, 'years') <= moment();
    }
    

    如果您在生日(日期)中插入小时,您也可以通过这种方式检查小时。但是,如果您在工作时间方面遇到问题,您也可以这样做:

    age18Check(birthday: Date) {
      return
        moment(birthday).add(18, 'years').format('DD/MM/YYYY') <= 
        moment().format('DD/MM/YYYY');
    }
    

    我希望你正在寻找这个!

    【讨论】:

    • 所以,我正在尝试执行此操作,但在控制台中不断遇到此问题。它没有显示用户是 18 岁还是 18 岁以下。如果我将日期转换为 ISOFormat,我会在控制台中收到一个巨大的错误。 pastebin.com/A2TenANv 错误:partycrew.xyz/images/xGflgWBPys_January_14_2022.png
    • 修复了简单的错误
    • 如果可行,请关闭签名!谢谢
    猜你喜欢
    • 2021-12-22
    • 2014-12-24
    • 1970-01-01
    • 2018-05-11
    • 2010-12-21
    • 2018-11-17
    • 2022-01-22
    • 2022-07-01
    • 1970-01-01
    相关资源
    最近更新 更多