微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Material Angular 6 DatePicker在前一天解析我的日期

当前版本的Material Angular DatePicker发生了一些非常奇怪的事情,在我将它从A5更新到A6之后,它开始在1天之前解析我的日期,示例在这里https://stackblitz.com/edit/angular6-datepicker-parsing-wrong-date

我正在使用原始文档示例,对我自己的语言稍有改变语言,并将自定义日期值应用于ngModel,以便它可以解析.

但你可以在这里查看代码

import {Component} from '@angular/core';
import {MAT_MOMENT_DATE_FORMATS,MomentDateAdapter} from '@angular/material-moment-adapter';
import {DateAdapter,MAT_DATE_FORMATS,MAT_DATE_LOCALE} from '@angular/material/core';

@Component({
  selector: 'datepicker-locale-example',templateUrl: 'datepicker-locale-example.html',styleUrls: ['datepicker-locale-example.css'],providers: [
    {provide: MAT_DATE_LOCALE,useValue: 'pt'},//my change from the original documentation example
    {provide: DateAdapter,useClass: MomentDateAdapter,deps: [MAT_DATE_LOCALE]},{provide: MAT_DATE_FORMATS,useValue: MAT_MOMENT_DATE_FORMATS},],})
export class DatepickerLocaleExample {
  constructor(private adapter: DateAdapter<any>) {}

  private someDate = '2018-01-31'; //my change from the original documentation example

  french() {
    this.adapter.setLocale('fr');
  }
}

HTML:

<mat-form-field>
  <input matInput [matDatepicker]="myDatePicker" placeholder="Different locale" [(ngModel)]="someDate"> <!-- my change from the original documentation example -->
  <mat-datepicker-toggle matSuffix [for]="myDatePicker"></mat-datepicker-toggle>
  <mat-datepicker #myDatePicker></mat-datepicker>
  <mat-hint>Actual Date: {{someDate}}</mat-hint>
</mat-form-field>

<button mat-button (click)="french()">Dynamically switch to french</button>

有谁知道如何解决这个问题?

解决方法

因此,经过一些研究后我发现这是一个时区问题.要临时修复它,我不得不将T00:00:00连接到我的日期结束,该日期来自后端,格式为yyyy / MM / dd.

如果可能,最好的选择是将后端格式更改为yyyy / MM / ddTHH:mm:ss.

否则,当您必须在Angular 6 Material DatePicker中使用格式yyyy / MM / dd时,有两个选项可以解决问题:te bad and good.

>坏(可能只是暂时的)就是做我做的事情,将T00:00:00连接到DatePicker解析它之前的日期结束.
>好处是实际获取日期字符串,将其转换为日期,将时区转换为GMT,然后允许DatePicker解析它.

我希望我能像我一样帮助绝望的人.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐