【发布时间】:2020-06-01 11:35:09
【问题描述】:
我正在为此拉扯我的头发,我知道它已经被回答过一百万次了。但我似乎无法找到问题的解决方案。
我正在使用带有自定义日期提供程序的 Angular 材料日期选择器来格式化日期。
这就是它的样子:
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