angular - Angular Material Datepicker - 传递的日期不正确
问题描述
我正在为此拉扯我的头发,我知道它已经被回答过一百万次了。但我似乎无法找到解决问题的方法。
我正在使用带有自定义日期提供程序的 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()
但无济于事的日期。
解决方案
我遇到了类似的问题,但我使用 MomentDateAdapter,当我在组件中收到日期时,我使用 moment 来格式化而不是在适配器中格式化,它似乎可以工作。在我看来,这个问题是由时区引起的,使用 moment().utc() 不会给你当前的时区
推荐阅读
- python - Python Scrapy 从扩展修改蜘蛛
- python - 如何为 Pandas 数据帧的每一行制作直方图?
- python - 如何遍历数据框以创建单独的 Folium 地图?
- bash - 从命名管道读取时如何停止 cat 命令?
- php - 无法在生产中下载laravel中的文件
- terraform - 在 terraform 中添加多个 azure sql 防火墙规则
- c++ - SSL 异常:无法在 POCO HTTPS 客户端中创建 SSL_CTX 对象
- android - 如何使用颤振将音频播放器添加到其中的应用程序大小小于 10 MB 的新闻最小化?
- sql - 编写一个 postgreSQL 查询来更新一个 json 列
- java - 在 androidx.appcompat.widget.SearchView 上设置建议