Angular Material日期选择器输入将日期视为美国格式

时间:2019-01-09 15:49:58

标签: angular angular-material

在输入字段中填充日期时(不通过日期选择器本身),日期被视为美国格式。 例如,在输入字段-10/01/2019中输入后,它将变为01/10/2019,当打开日期选择器时,日期将是2019年10月的第一天。

通过日期选择器选择日期时,没有问题,所选日期显示为dd / MM / yyyy

2 个答案:

答案 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()));
}

参见

stackblitz

答案 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 {}