首页 > 解决方案 > 为什么日期在一天前带有价值?

问题描述

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

我的代码组件.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)),
  });

标签: angulartypescriptangular-materialmomentjsangular-moment

解决方案


尝试这个

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

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

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


推荐阅读