从我的 browser/server 获取时区以注入 angular2-highcharts

Get the timezone from my browser/server to inject in angular2-highcharts

我实际上使用来自 Highcharts timezoneOffset 的功能手动设置时区 api,我目前处于 gmt+2,所以我将它设置为 -2 * 60 但是当我们之前更改 10 月的时间 我的设置将无法正常工作,因此我决定改用浏览器或服务器时间。我知道我们可以使用来自 api getTimezoneOffset: Function 的 gettimezoneOffset 函数。 pb 是我用 typescript 和 Angular 4 设置的,我怎样才能以优雅的方式制作它?提前致谢

这是我使用 timezoneOffset 的实际工作代码:

 constructor(public userService3: UserService3) {

     const Highcharts = require('highcharts');

    Highcharts.setOptions({
  global: {
    timezoneOffset: -2 * 60
   }
});
           this.options = {
            title : { text : '' },
            chart: {  type: 'area'},
            legend: { enabled: false },
            credits: { enabled: false },
            xAxis: { type: 'datetime',
                    startOnTick: false,
                    endOnTick: false,
                    tickInterval: 36e5 * 2, // two hours
                    },
            yAxis: { min: 0,
              max: 100 },
            plotOptions: {
              series: {
                  color: '#648e59',
                  fillOpacity: 0.8,
                  fillColor: '#648e59',
                  pointInterval: 36e5 * 2 // two hours
                      }
            },
            series: [{
              name: 'Someone1',
              data: [],
            }]
        };
    }
   saveInstance(chartInstance) {
    this.chart = chartInstance;
     console.log(chartInstance);
}

    public ngOnInit () {
    this.dataSubscription = this.userService3.getData().subscribe((data) 
=> {
      this.options.series[0].data = data.data.operating_details;
      console.log(data);
   });
}
    ngOnDestroy() {
      if (this.dataSubscription){
this.dataSubscription.unsubscribe();
}
    }

这是我的 html:

   <chart [options]="options" (load)="saveInstance($event.context)"> 
   </chart>

您可以简单地从您的客户端获取时区偏移量:

const timeZoneOffset = new Date().getTimezoneOffset();

您将在几分钟内获得与 UTC 的本地差异,然后根据需要使用它。根据您的应用程序类型,对于大多数情况下,当您的客户处于不同时区时,这应该是比硬编码时区更好的方法。

var date = new Date(); var timezone = date.getTimezoneOffset();

但我认为你应该从服务器获取时区,因为浏览器根据本地系统给出时区,如果有人更改它会给你带来问题。