我有一种情况需要在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日期时间系统设置,现在一切正常。
但是当我有一台UTC + 5日期时间系统设置的服务器时,图表是错误的:
我需要的是无论服务器时区是什么,无论客户端时区是什么,它都应该显示7:42
。在两种情况下,从服务器发送7:42时间数据相同:
DateTime: "/Date(1453776133000)/"
DateTimeString: "26/01/2016 07:42:13"
我可能错了,但问题不在于您使用的是UTC吗?通过将useUTC设置为false,我认为您将使用日期时间的确切值,无论您的服务器/客户端时区是什么
您可以设置Highcharts应使用的时区,如下所示:
Highcharts.setOptions(global : {
timezoneOffset: 180
});
timezoneOffset
以分钟为单位使用时间
@Rafael Teles解决方案的替代方案是将时区设置为字符串。
const timezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;
Highcharts.setOptions({
time: {
timezone: timezone
}
});
DateTimeFormat()函数将时区作为字符串返回,例如''Europe / Oslo''