将时期更改为Highcharts中的相应时区并在x轴上显示时间

时间:2016-06-03 05:55:43

标签: highcharts timezone handlebars.js epoch timezone-offset

我有一些以毫秒为单位的纪元时间戳,我将其传递给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进行数据传递,所以不要混淆。 感谢

1 个答案:

答案 0 :(得分:3)

一些事情:

  • 您应该使用标准化IANA time zone identifiers来标识每个时区。例如,使用America/New_York,而不是us-east

  • 请勿尝试手动确定每个区域的时区偏移量,否则您可能很容易出错。

  • 时区偏移随时间变化。这是由于标准时间和夏令时的变化。

  • 在HighCharts中执行此操作的更好方法是挂钩getTimezoneOffset函数。这是一个简单的函数,当传递时间戳时,返回适当的时区偏移量。您需要实现该功能,以便在正确的时间为所选时区返回适当的偏移量。

  • 最简单的方法是整合moment-timezone。有一个here的示例,也可以找到in the HighCharts documentation