【问题标题】:Highcharts Datetime axisHighcharts 日期时间轴
【发布时间】:2013-08-02 10:30:43
【问题描述】:

我通过 php(从数组)获取 x 轴和 y 轴的数据,并以 [x,y] 格式在系列块中“写下来”,如下所示:

series: [{
            name: 'Dat1',
            color: '#AA4643',
            yAxis: 0,
            data: [[Date.UTC(2013, 07, 10), 9],[Date.UTC(2013, 07, 11), 56],[Date.UTC(2013, 07, 12), 25],...],
            pointInterval: 24 * 3600 * 1000,
          }, {
            name: 'Dat2',
            color: '#4572A7',
            yAxis: 1,
            data: [[Date.UTC(2013, 07, 10), 9],[Date.UTC(2013, 07, 11), 22],[Date.UTC(2013, 07, 12), 8],...],
            pointInterval: 24 * 3600 * 1000,
          }]

正如您在此处看到的,日期是 7 月,但是在图表中,x 轴显示的是 8 月(可能是实际月份)而不是 7 月!!这是哪里来的?

你可以在这里看到一个例子:

http://jsfiddle.net/8rysM/

如何解决?

【问题讨论】:

  • 月份从 0 开始,即 06 是 7 月。
  • 有什么设置可以让它从1开始吗?
  • 我不知道这样的设置。您可以在 javascript 中查看您的 Date 对象,只需将 setUTCMonth 设置为 getUTCMonth()-1
  • 你能举个例子吗?当我尝试在 javascript 中设置时,我得到 ReferenceError: getUTCMonth is not defined
  • 您可以在月份索引中计算 date.utc -1 或使用格式化程序。

标签: jquery datetime highcharts axis


【解决方案1】:

您可以使用格式化程序来实现月份的更正。 一种修复 xAxis 以显示正确的月份:

xAxis: {
    type: 'datetime',
    labels : {
        formatter: function() {
            var myDate = new Date(this.value);
            var newDateMs = Date.UTC(myDate.getUTCFullYear(),myDate.getUTCMonth()-1,myDate.getUTCDate());   
            return Highcharts.dateFormat('%e. %b',newDateMs);      
        }
    }    
}

tooltip 也有类似的:

tooltip: {
            formatter: function() {
              var myDate = new Date(this.x);
              var newDateMs = Date.UTC(myDate.getUTCFullYear(),myDate.getUTCMonth()-1,myDate.getUTCDate());   
              return '<b>'+ this.series.name +'</b><br/>'+Highcharts.dateFormat('%e. %b', newDateMs) +': '+ this.y;
}

jsFiddle

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    相关资源
    最近更新 更多