Highcharts - 折线图使用错误的TimeZone

问题描述 投票:0回答:3

我有一种情况需要在Highchart中显示从服务器收到的确切时间。日期时间不应基于服务器时区或客户端时区而更改。

我已将UTC设置为true:

Highcharts.setOptions({
    global: {
        useUTC: true,
        timezoneOffset: 0
    }
});

我将毫秒作为数据传递:

    for (i = 0; i < xAxisData.length; i++) {
        item = xAxisData[i];
        dateMiliseconds = parseInt(item.DateTime.replace('/Date(', ''));
        var obj = { x: dateMiliseconds, title: item.FlagText, text: item.Text };
        xData.push(obj);
    }

然后像这样设置系列:

    $scope.chartConfig.series.push({
        type: 'flags',
        data: xData,
        onSeries: 'mileageSeries',
        shape: 'squarepin',
        name: 'Events',
        title: 'Events',
        id: "Events"
        //width: 16
    });

如果我的服务器具有UTC日期时间系统设置,现在一切正常。

enter image description here

但是当我有一台UTC + 5日期时间系统设置的服务器时,图表是错误的:

enter image description here

我需要的是无论服务器时区是什么,无论客户端时区是什么,它都应该显示7:42。在两种情况下,从服务器发送7:42时间数据相同:

   DateTime: "/Date(1453776133000)/"
   DateTimeString: "26/01/2016 07:42:13"
javascript highcharts highstock
3个回答
1
投票

我可能错了,但问题不在于您使用的是UTC吗?通过将useUTC设置为false,我认为您将使用日期时间的确切值,无论您的服务器/客户端时区是什么


1
投票

您可以设置Highcharts应使用的时区,如下所示:

Highcharts.setOptions(global : {
    timezoneOffset: 180
});

timezoneOffset以分钟为单位使用时间


0
投票

@Rafael Teles解决方案的替代方案是将时区设置为字符串。

const timezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;

Highcharts.setOptions({
    time: {
        timezone: timezone
    }
});

DateTimeFormat()函数将时区作为字符串返回,例如''Europe / Oslo''

https://api.highcharts.com/highcharts/time.timezone

© www.soinside.com 2019 - 2024. All rights reserved.