所以,我設法讓它作業,但 2004 年回傳 18 歲以下。假設我將年份設定為 01/13/2004 它回傳年齡為 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')]});
控制臺輸出截圖

uj5u.com熱心網友回復:
最好的方法是使用 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');
}
我希望你正在尋找這個!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/415346.html
標籤:
上一篇:將ionic5升級到6時,模塊“@ionic/core”沒有匯出成員“setupIonicReact”
下一篇:離子cdk-虛擬滾動
