【问题标题】:Why date comes with value a day ago?为什么日期在一天前带有价值?
【发布时间】:2019-08-08 08:19:14
【问题描述】:

帮助解决问题。 2天了,我无法理解问题是什么。我正在使用 Angular 组件“使用 Moment.js 日期的日期选择器”。但问题是,当我选择例如 03/10/2015 时,组件返回 03/09/2015。我知道这是由于时区问题,因为我有(UTC + 3),但我不明白如何解决它。

我的代码component.html:

<mat-form-field appearance="outline" class="datepicker" *ngIf="buttonDisabled" >
  <input matInput [matDatepicker]="birthdate" [value]="user.birthdate" formControlName="birthdate" >
  <mat-datepicker-toggle matSuffix [for]="birthdate"></mat-datepicker-toggle>
  <mat-datepicker #birthdate></mat-datepicker>
</mat-form-field>

组件.ts

import { Component } from '@angular/core';
import { NgForm, FormControl, FormGroup } from '@angular/forms';

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

import * as _moment from 'moment';
import { default as _rollupMoment } from 'moment';

const moment = _rollupMoment || _moment;

@Component({
  selector: 'userinfo',
  templateUrl: './userinfo.component.html',
  styleUrls: ['../../../app.component.css'],
  providers: [
    { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
    { provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS }
  ]
})

export class UserInfoComponent {

  mgForm: FormGroup = new FormGroup({
    "birthdate": new FormControl(moment(this.user.birthdate)),
  });

【问题讨论】:

标签: angular typescript angular-material momentjs angular-moment


【解决方案1】:

您可以调整日期的偏移时间,如下所示:

dt.setTime(dt.getTime() - (dt.getTimezoneOffset() * 60000));

【讨论】:

    【解决方案2】:

    尝试使用 Angular 的日期管道 - formatDate()

    {{ value_expression | date [ : format [ : timezone [ : locale ] ] ] }}

    文档在这里 - https://angular.io/api/common/DatePipe

    【讨论】:

      【解决方案3】:

      试试这个

      moment().toISOString();
      moment().toISOString(keepOffset);
      

      .toISOString() 返回 UTC 时间戳,即使是本地模式下的时刻。

      https://momentjs.com/docs/#/displaying/as-iso-string/

      【讨论】:

        猜你喜欢
        • 2016-08-22
        • 1970-01-01
        • 2011-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-16
        相关资源
        最近更新 更多