问题描述: 当使用Angular4 material日期选择器并将其值转为JSON字符串时,日期值的时区会发生变化。
解决方法:
import { Component, ViewChild } from '@angular/core';
import { MatDatepicker } from '@angular/material/datepicker';
@Component({
selector: 'app-datepicker-example',
template: `
`,
styles: []
})
export class DatepickerExampleComponent {
selectedDate: Date;
}
import { Component, ViewChild, OnInit } from '@angular/core';
import { MatDatepicker } from '@angular/material/datepicker';
@Component({
selector: 'app-datepicker-example',
template: `
`,
styles: []
})
export class DatepickerExampleComponent implements OnInit {
selectedDate: Date;
ngOnInit() {
this.selectedDate = new Date();
this.selectedDate.setTime(this.selectedDate.getTime() - this.selectedDate.getTimezoneOffset() * 60 * 1000);
}
getSelectedDateInGMT() {
const selectedDateInGMT = new Date(this.selectedDate.getTime() + this.selectedDate.getTimezoneOffset() * 60 * 1000);
return selectedDateInGMT;
}
getSelectedDateAsString() {
const selectedDateInGMT = this.getSelectedDateInGMT();
const selectedDateAsString = JSON.stringify(selectedDateInGMT);
return selectedDateAsString;
}
}
在上面的代码中,我们通过调用setTime
方法将日期值的时区设置为“GMT”。在转换为JSON字符串之前,我们可以使用getSelectedDateInGMT
方法获取日期值,并将其转换为“GMT”时区。然后,我们可以使用JSON.stringify
将日期值转换为字符串。