我使用MdDatePickerModule来选择日期但我有一个问题:
如果我选择8月5日,一切都还可以.但是,如果我重新打开选择,月份会变化并变为5月,如果我选择5月3日,我关闭,重新打开,则月份为3月.现在我知道问题在于,与欧洲相比,美国的月份和日期都是倒置的,但解决冲突的“聪明”方式是什么.
谢谢
如果我选择8月5日,一切都还可以.但是,如果我重新打开选择,月份会变化并变为5月,如果我选择5月3日,我关闭,重新打开,则月份为3月.现在我知道问题在于,与欧洲相比,美国的月份和日期都是倒置的,但解决冲突的“聪明”方式是什么.
谢谢
现在正确的做法是设置语言环境以及使用自定义适配器来正确解析日期.
原文链接:https://www.f2er.com/angularjs/143290.htmlTS:
import {Component} from '@angular/core'; import { NativeDateAdapter,DateAdapter,MD_DATE_FORMATS } from "@angular/material"; export class ItalianDateAdapter extends NativeDateAdapter { parse(value: any): Date | null { if ((typeof value === 'string') && (value.indexOf('/') > -1)) { const str = value.split('/'); if (str.length < 2 || isNaN(+str[0]) || isNaN(+str[1]) || isNaN(+str[2])) { return null; } return new Date(Number(str[2]),Number(str[1]) - 1,Number(str[0]),12); } const timestamp = typeof value === 'number' ? value : Date.parse(value); return isNaN(timestamp) ? null : new Date(timestamp); } } @Component({ selector: 'datepicker-overview-example',templateUrl: './datepicker-overview-example.html',styleUrls: ['./datepicker-overview-example.css'],providers: [{provide: DateAdapter,useClass: ItalianDateAdapter}],}) export class DatepickerOverviewExample { locale: string; constructor(private dateAdapter: DateAdapter<Date>) { this.locale = 'it'; this.dateAdapter.setLocale('it'); } }