我有一些以毫秒为单位的纪元时间戳,我将其传递给highcharts中的x轴。 现在我有一个选择按钮,其中包含一些预定义的时区。例如:美国东部,英国,台湾,新加坡等。 所以我想要的是当用户选择特定时区时,图表上的时间戳应该显示所选时区的当地时间。
为此我写了这个示例代码。
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}}
}
});
如果选择IST,此代码有效。时间戳转换为我当地时间。 但是当我在图表上选择其他时区时,我得到的时间是错误的。我不知道我是否应该在几秒钟内转换timezoneOffset并传递它或毫秒,或者如果我做错了。
任何帮助都将不胜感激。
PS: - 我使用Handlebars进行数据传递,所以不要混淆。 感谢
答案 0 :(得分:3)
一些事情:
您应该使用标准化IANA time zone identifiers来标识每个时区。例如,使用America/New_York
,而不是us-east
。
请勿尝试手动确定每个区域的时区偏移量,否则您可能很容易出错。
时区偏移随时间变化。这是由于标准时间和夏令时的变化。
在HighCharts中执行此操作的更好方法是挂钩getTimezoneOffset
函数。这是一个简单的函数,当传递时间戳时,返回适当的时区偏移量。您需要实现该功能,以便在正确的时间为所选时区返回适当的偏移量。
最简单的方法是整合moment-timezone。有一个here的示例,也可以找到in the HighCharts documentation。