我有一种情况需要在Highchart中显示从服务器收到的确切时间。日期时间不应基于服务器时区或客户端时区而更改。
我已将UTC设置为true:
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setAxisMaxValue(1500f);
leftAxis.setAxisMinValue(1200f);
leftAxis.setStartAtZero(false);
我将毫秒作为数据传递:
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);
}
如果我的服务器具有UTC日期时间系统设置,现在一切正常。
但是当我的服务器具有UTC + 5日期时间系统设置时,图表是错误的:
我需要的是无论服务器时区是什么,无论客户端时区是什么,它都应显示 $scope.chartConfig.series.push({
type: 'flags',
data: xData,
onSeries: 'mileageSeries',
shape: 'squarepin',
name: 'Events',
title: 'Events',
id: "Events"
//width: 16
});
。在两种情况下,从服务器发送7:42时间数据相同:
7:42
答案 0 :(得分:1)
我可能错了,但问题不在于您使用的是UTC吗?通过将useUTC设置为false,我认为您将使用日期时间的确切值,无论您的服务器/客户端时区是什么
答案 1 :(得分:1)
您可以按照以下步骤设置Highcharts应使用的时区:
Highcharts.setOptions(global : {
timezoneOffset: 180
});
timezoneOffset
以分钟为单位使用时间
答案 2 :(得分:0)
@Rafael Teles解决方案的替代方法是将时区设置为字符串。
const timezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;
Highcharts.setOptions({
time: {
timezone: timezone
}
});
DateTimeFormat()函数以字符串形式返回时区,例如“欧洲/奥斯陆”