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');