Angular 使用日期时间选择器获取没有时区的日期和时间

Angular 使用日期时间选择器获取没有时区的日期和时间,angular,typescript,momentjs,Angular,Typescript,Momentjs,我有一个日期时间选择器的表单,如下所示: <mat-form-field> <mat-placeholder>Time Window Start</mat-placeholder> <mat-datetimepicker-toggle [for]="datetimePickerStart" matSuffix></mat-datetimepicker-toggle> <mat-dat

我有一个日期时间选择器的表单,如下所示:

  <mat-form-field>
    <mat-placeholder>Time Window Start</mat-placeholder>
    <mat-datetimepicker-toggle [for]="datetimePickerStart" matSuffix></mat-datetimepicker-toggle>
    <mat-datetimepicker
      #datetimePickerStart
      type="datetime"
      openOnFocus="true"
      timeInterval="5">
    </mat-datetimepicker>
    <input
      matInput
      formControlName="datestart"
      [matDatetimepicker]="datetimePickerStart"
      required
      autocomplete="false">
  </mat-form-field>
然后我得到如下值:

var datestart: Moment = this.form.get('datestart').value;

但是当我输入一个日期时,比如说11月11日12:00PM,我得到的日期是11月11日10:00PM(输入中的值是
11/11/2020 10:00PM
,而
this.form.get('datestart')返回的值;
2020-11-11T10:00.000Z
)。我需要的是日期选择器返回我
2020-11-11T12:00:00.000Z
。如何获得该值?

我认为当您使用
{useutct:true}
时,它会占用您当前的时间并将其转换为UTC,从而使中午12点变为晚上10点。

试着不要使用
{useuUTC:true}

正如Tom所建议的,解决方案是使用时刻时区:

import * as moment from 'moment';
import 'moment-timezone';

var datestart = moment.tz(this.form.get('datestart').value, moment.tz.guess());
console.log(datestart.format("YYYY-MM-DDTH:mm:ss.SSS") + 'Z');

在这里,
moment.tz.guess()
返回时区(
“欧洲/柏林”
),并且
moment.tz()
在检测到的时区中创建一个日期。

您可以使用moment-zone()
import * as moment from 'moment';
import 'moment-timezone';

var datestart = moment.tz(this.form.get('datestart').value, moment.tz.guess());
console.log(datestart.format("YYYY-MM-DDTH:mm:ss.SSS") + 'Z');