ngx-bootstrap timepicker(2.0.3)在ios,Android和PC上显示不同的值

时间:2018-09-21 12:57:21

标签: ios ngx-bootstrap

我在iOS(Safari和Chrome)上看到的值不同于在Android或PC上的值。我的HTML是

<timepicker id="fromDatePicker" (keyup)="writeTime($event)" 
    [(ngModel)]="event.durationFrom" [showMeridian]="ismeridian"
    [minuteStep]="1"></timepicker>

在打字稿中,我根据UTC字符串创建日期

this.event.durationFrom = new Date(event.calEvent.end.format());

在PC / Android上,“小时”显示的值与UTC小时相同,但在iOS上,显示的小时被默认时区偏移所偏移。这导致保存了不同的数据。有什么方法可以强制iOS实现使用UTC或忽略时区?

1 个答案:

答案 0 :(得分:0)

这不是ngx-bootstrap或timepicker模块的问题。问题是我的全日历库,其时刻库在ios上以不同的日期值结束。尽管确实创建了变通办法,但我不确定如何最好地解决该问题。

  setDateForTimePicker(calMoment) {
    let utcDt = new Date(calMoment.toISOString(true));
    let assetDt = new Date(calMoment);
    if (utcDt.getHours() != assetDt.getHours()) {
      return new Date(
        assetDt.getTime() + assetDt.getTimezoneOffset() * 60 * 1000
      );
    } else {
      return new Date(utcDt.getTime() + utcDt.getTimezoneOffset() * 60 * 1000);
    }
  }