我正在用这个把头发拔出来,我知道它已经被回答了一百万遍了。但我似乎无法找到解决问题的方法。
我正在使用带有自定义日期提供程序的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()
但无济于事的日期。
我有一个类似的问题,但是我使用MomentDateAdapter,当我在组件中收到日期时,我使用moment来格式化而不是在适配器中格式化,这似乎可行。在我看来,该问题是由时区引起的,使用moment()。utc()不会为您提供当前时区