在输入字段中填充日期时(不通过日期选择器本身),日期被视为美国格式。 例如,在输入字段-10/01/2019中输入后,它将变为01/10/2019,当打开日期选择器时,日期将是2019年10月的第一天。
通过日期选择器选择日期时,没有问题,所选日期显示为dd / MM / yyyy
答案 0 :(得分:3)
更新 格式函数中存在“错误”,需要在('0'+(date.getMonth()+ 1))。slice(-2)-
中加括号只需创建一个DateAdapter
import {NativeDateAdapter,DateAdapter} from '@angular/material';
export class MyDateAdapter extends NativeDateAdapter{
parse(value: string) {
let it=value.split('/');
if (it.length==3)
return new Date(+it[2],+it[1]-1,+it[0],12)
}
format(date: Date, displayFormat: Object) {
return ('0'+date.getDate()).slice(-2)+'/'+
('0'+(date.getMonth()+1)).slice(-2)+'/'+date.getFullYear()
}
}
然后用作提供者
@Component({
selector: 'datepicker-formats-example',
templateUrl: 'datepicker-formats-example.html',
styleUrls: ['datepicker-formats-example.css'],
providers: [
{provide: DateAdapter, useClass: MyDateAdapter}
],
})
export class DatepickerFormatsExample {
date = new FormControl(new Date(Date.now()));
}
参见
答案 1 :(得分:0)
如果您使用的是角形材质的日期选择器,则默认情况下可以覆盖美国的语言环境。 看到此链接:https://material.angular.io/components/datepicker/overview#internationalization
您需要将 useValue 设置为fr-FR或其他使用dd / MM / yyyy的语言环境
@NgModule({
providers: [
{provide: MAT_DATE_LOCALE, useValue: 'fr-FR'},
],
})
export class MyApp {}