Angular Material Datepicker-通过的日期不正确

问题描述 投票:0回答:1

我正在用这个把头发拔出来,我知道它已经被回答了一百万遍了。但我似乎无法找到解决问题的方法。

我正在使用带有自定义日期提供程序的Angular材质datepicker格式化日期。

这是它的外观:

import { NativeDateAdapter } from ‘@angular/material’;
import { MatDateFormats } from ‘@angular/material/core’;
export class AppDateAdapter extends NativeDateAdapter {
  format(date: Date, displayFormat: Object): string {
    if (displayFormat === ‘input’) {
      let day: string = date.getDate().toString();
      day = +day < 10 ? ‘0’ + day : day;
      let month: string = (date.getMonth() + 1).toString();
      month = +month < 10 ? ‘0’ + month : month;
      let year = date.getFullYear();
      return `${day}-${month}-${year}`;
    }
    return date.toDateString();
  }
}
export const APP_DATE_FORMATS: MatDateFormats = {
  parse: {
    dateInput: { month: ‘short’, year: ‘numeric’, day: ‘numeric’ },
  },
  display: {
    dateInput: ‘input’,
    monthYearLabel: { year: ‘numeric’, month: ‘numeric’ },
    dateA11yLabel: { year: ‘numeric’, month: ‘long’, day: ‘numeric’
    },
    monthYearA11yLabel: { year: ‘numeric’, month: ‘long’ },
  }
};

现在,问题是,当我通过02 Jan 2019时,日期显示良好。但是,在提交数据和检查有效负载时,日期将以2019-02-01T22:00:00.000Z的形式传递。现在我知道这与UTC有关,但是我似乎无法解决此问题。当完全不使用提供程序或扩展MomentDateAdapter时,日期可以很好地传递为2019-02-01T00:00:00.000Z

我的真正问题是,当我创建另一个提供程序并扩展MomentDateAdapter而不是NativeDateAdapter时,一切都非常完美。但是,我无法格式化MomentDateAdapter的日期。

我什至尝试返回格式为moment().utc()但无济于事的日期。

angular datepicker angular-material datetime-format utc
1个回答
0
投票

我有一个类似的问题,但是我使用MomentDateAdapter,当我在组件中收到日期时,我使用moment来格式化而不是在适配器中格式化,这似乎可行。在我看来,该问题是由时区引起的,使用moment()。utc()不会为您提供当前时区

© www.soinside.com 2019 - 2024. All rights reserved.