小编E.T*_*ake的帖子

在 Angular Material 8 中使用 utc+0 和 MAT_DATE_LOCALE

我正在使用 Angular 8 和 Angular Material 8。我的应用程序在 AppModule 中有以下代码:

{ provide: MAT_DATE_LOCALE, useFactory: "myFunctionToGetServerLanguageCode" }
Run Code Online (Sandbox Code Playgroud)

其中 myFunctionToGetServerLanguageCode 是一种返回字符串的方法,如“en-US”(基于服务器)。然后,我将这个组件与来自 Angular Material 的 datepicker 和这些特定的提供者:

    providers: [
    { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
    { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },
    { provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS }
],
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我打算:

  • 将 moment 与 datePicker 一起使用;
  • 使日期选择器使用 utc+0;
  • 使用与文化相同的格式;

例如,带有“en-US”的 MAT_DATE_LOCALE:如果我选择 2020 年 4 月 10 日,我预计选择器会显示“04/10/2020”(例如,“L”格式将设置为 MM/DD/YYYY ) 并发出“2020-04-10T00:00:00.000Z”

发生的情况是选择器发出“2020-04-09T23:00:00.000Z”。使用开发人员工具,发出的值是一个时刻,私有属性“_isUtc”设置为 false。

我哪里错了?

momentjs angular angular8 angular-material-8

2
推荐指数
1
解决办法
1232
查看次数

标签 统计

angular ×1

angular-material-8 ×1

angular8 ×1

momentjs ×1