Измените значение даты в mat-datepicker в соответствии с часовым поясом - PullRequest
3 голосов
/ 24 января 2020

в ц. Я использовал (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');
}

Сборщик даты выбрал дату в 00.00 утра. Дата в пипсах не будет указывать время по Гринвичу.

Вот пример> https://stackblitz.com/edit/material-date-picker-csyldt?embed=1&file=app / app.component.ts

Ответы [ 3 ]

3 голосов
/ 24 января 2020

Я нашел решение для преобразования выбранной даты в любую дату часового пояса (с указанным временем)

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

Я отредактировал стек для тех, у кого была такая же проблема.

1 голос
/ 24 января 2020

Вы можете использовать момент для перевода вашего времени в UT C. В UT C и GMT нет смещения. Для даты вы просто передаете сегодняшнюю дату в функцию. var utcDate = новый момент («2020-01-24T11: 00», «ГГГГ-ММ-ДДТЧ: мм»). ut c ();

1 голос
/ 24 января 2020

Измените метод setDate, как показано ниже,

setDate(date: string) {
  this.date = date;
  this.gmtDate = new Date(date).toUTCString();
}
...