gpt4 book ai didi

typescript - Angular Material Datepicker 输入格式

转载 作者:行者123 更新时间:2023-12-03 14:24:25 32 4
gpt4 key购买 nike

使用日期选择器选择日期时,一切正常,以所需格式显示日期:DD/MM/YYYY
但是当手动输入格式为 DD/MM/YYYY 的日期时,日期选择器会自动将日期更改为 MM/DD/YYYY ,检测第一个值 DD作为一个月。

如何使手动输入被检测为 DD/MM/YYYY , 不像 MM/DD/YYYY ?

谢谢!

<mat-form-field class="datepickerformfield" floatLabel="never">
<input matInput class="dp" formControlName="fpresentaciondesde" [matDatepicker]="picker5" placeholder="DD/MM/YYYY" required>
<mat-datepicker-toggle matSuffix [for]="picker5"></mat-datepicker-toggle>
<mat-datepicker #picker5></mat-datepicker>
</mat-form-field>

最佳答案

您需要像这样构建一个自定义日期适配器:

export class CustomDateAdapter extends NativeDateAdapter {

parse(value: any): Date | null {

if ((typeof value === 'string') && (value.indexOf('/') > -1)) {
const str = value.split('/');

const year = Number(str[2]);
const month = Number(str[1]) - 1;
const date = Number(str[0]);

return new Date(year, month, date);
}
const timestamp = typeof value === 'number' ? value : Date.parse(value);
return isNaN(timestamp) ? null : new Date(timestamp);
}

format(date: Date, displayFormat: Object): string {
date = new Date(Date.UTC(
date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(),
date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
displayFormat = Object.assign({}, displayFormat, { timeZone: 'utc' });

const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);
return dtf.format(date).replace(/[\u200e\u200f]/g, '');
}

}

然后在您的应用中使用它:
@NgModule({
....
providers: [
{ provide: DateAdapter, useClass: CustomDateAdapter }
]
})

DEMO

关于typescript - Angular Material Datepicker 输入格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58132292/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com