0

在 ts。我使用 (dateChange)="setToDate($event.value)"来获取选定的日期。

<mat-form-field appearance="outline">
        <input matInput [matDatepicker]="picker2" readonly = "readonly"  [(ngModel)] = "grid.todate" 
            (dateChange)="setToDate($event.value)" [min]="grid.fromdate">
        <mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>
        <mat-datepicker #picker2></mat-datepicker>
    </mat-form-field>

我想将所选日期更改为服务器时区,女巫在 GMT 中。

我已经尝试过 DatePip。

public setToDate(data: any): void {
    const todayDate  = new Date();
    this.todate = data._d;
    const changedDate = new DatePipe('en-Us').transform(data.toDate(), 'full', 'GMT');
}

日期选择器在上午 0 点选择了日期。Date pip 不会给出 GMT 时间。

这是一个示例> https://stackblitz.com/edit/material-date-picker-csyldt?embed=1&file=app/app.component.ts

4

3 回答 3

1

如下更改您的 setDate 方法,

setDate(date: string) {
  this.date = date;
  this.gmtDate = new Date(date).toUTCString();
}
于 2020-01-24T06:10:57.203 回答
1

您可以使用 moment 将时间转换为 UTC。UTC 和 GMT 没有偏移。对于日期,您只需在函数中传递今天的日期。var utcDate = new moment("2020-01-24T11:00", "YYYY-MM-DDTHH:mm").utc();

于 2020-01-24T06:20:03.593 回答
0

我找到了将选择的日期转换为任何时区日期的解决方案(选择的时间)

setDate(newdate: string) {
    const _ = moment();
    const date = moment(newdate).add({hours: _.hour(), minutes:_.minute() , seconds:_.second()});
    this.date = date.toDate();
    this.gmtDate = new DatePipe('en-Us').transform(date, 'full', '+530');
  }
}

https://stackblitz.com/edit/material-date-picker-csyldt?embed=1&file=app/app.component.ts

我已经为有同样问题的人编辑了 stackblitz。

于 2020-01-24T06:24:53.153 回答