将纪元更改为 Highcharts 中的相应时区并在 x 轴上显示时间
Changing the epoch to respective timezone in Highcharts and showing the time on x-axis
我有一些以毫秒为单位的纪元时间戳,我正在将它们传递给高图表中的 x 轴。
现在我有一个 select 按钮,其中提到了一些预定义的时区。例如:美国东部、英国、台湾、新加坡等。
所以我想要的是当用户 select 处于特定时区时,图表上的时间戳应显示该 selected 时区的当地时间。
为此,我编写了这个示例代码。
Highcharts.setOptions({ // This is for all plots, change Date axis to local time-zone
global : {
{{#if_eq tz "IST"}}
useUTC : false
{{/if_eq}}
{{#if_eq tz "us-east"}}
timezoneOffset: -5 * 60
{{/if_eq}}
{{#if_eq tz "us-west"}}
timezoneOffset: -7 * 60
{{/if_eq}}
{{#if_eq tz "uk"}}
timezoneOffset: 1 * 60
{{/if_eq}}
{{#if_eq tz "tw"}}
timezoneOffset: 8 * 60
{{/if_eq}}
{{#if_eq tz "sg"}}
timezoneOffset: 8 * 60
{{/if_eq}}
}
});
如果您 select IST,则此代码有效。时间戳被转换为我的本地时间。
但是当我 select 图表上的其他时区时,我得到的时间是错误的。我不知道我是否应该以秒为单位转换 timezoneOffset 并传递它或毫秒,或者我是否做错了。
如有任何帮助,我们将不胜感激。
PS:- 我正在使用 Handlebars 进行数据传递,所以请不要混淆。
谢谢
一些事情:
您应该使用标准化的IANA time zone identifiers来识别每个时区。例如,使用 America/New_York
,而不是 us-east
。
不要尝试手动确定每个时区的时区偏移量,否则您很容易出错。
时区偏移 随时间变化。这是由于标准时间和夏令时的变化。
在 HighCharts 中执行此操作的更好方法是挂钩 getTimezoneOffset
函数。这是一个简单的函数,当传递时间戳时,returns 适当的时区偏移量。您需要实现该功能,使其 returns 在正确的时间为所选时区提供适当的偏移量。
最简单的方法是整合 moment-timezone. There is an example of this here, which can also be found in the HighCharts documentation.
我有一些以毫秒为单位的纪元时间戳,我正在将它们传递给高图表中的 x 轴。 现在我有一个 select 按钮,其中提到了一些预定义的时区。例如:美国东部、英国、台湾、新加坡等。 所以我想要的是当用户 select 处于特定时区时,图表上的时间戳应显示该 selected 时区的当地时间。
为此,我编写了这个示例代码。
Highcharts.setOptions({ // This is for all plots, change Date axis to local time-zone
global : {
{{#if_eq tz "IST"}}
useUTC : false
{{/if_eq}}
{{#if_eq tz "us-east"}}
timezoneOffset: -5 * 60
{{/if_eq}}
{{#if_eq tz "us-west"}}
timezoneOffset: -7 * 60
{{/if_eq}}
{{#if_eq tz "uk"}}
timezoneOffset: 1 * 60
{{/if_eq}}
{{#if_eq tz "tw"}}
timezoneOffset: 8 * 60
{{/if_eq}}
{{#if_eq tz "sg"}}
timezoneOffset: 8 * 60
{{/if_eq}}
}
});
如果您 select IST,则此代码有效。时间戳被转换为我的本地时间。 但是当我 select 图表上的其他时区时,我得到的时间是错误的。我不知道我是否应该以秒为单位转换 timezoneOffset 并传递它或毫秒,或者我是否做错了。
如有任何帮助,我们将不胜感激。
PS:- 我正在使用 Handlebars 进行数据传递,所以请不要混淆。 谢谢
一些事情:
您应该使用标准化的IANA time zone identifiers来识别每个时区。例如,使用
America/New_York
,而不是us-east
。不要尝试手动确定每个时区的时区偏移量,否则您很容易出错。
时区偏移 随时间变化。这是由于标准时间和夏令时的变化。
在 HighCharts 中执行此操作的更好方法是挂钩
getTimezoneOffset
函数。这是一个简单的函数,当传递时间戳时,returns 适当的时区偏移量。您需要实现该功能,使其 returns 在正确的时间为所选时区提供适当的偏移量。最简单的方法是整合 moment-timezone. There is an example of this here, which can also be found in the HighCharts documentation.