2013-08-01 4 views
0

им адресности данные для обеих осей х и у-оси, проходящей через PHP (из массива) и «записывая» в блоке серии в формате [х, у], например так:Highcharts Datetime ось

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, 
      }] 

Как вы можете видеть здесь, даты относятся к июлю июля. Однако на графике ось x показывает месяц август (может быть, фактический месяц), а не июль! Откуда это?

Пример вы можете увидеть здесь:

http://jsfiddle.net/8rysM/

Как решить эту проблему?

+0

Месяцы, начиная с 0, то есть 06 в июле. –

+0

есть ли настройка, чтобы она начиналась с 1? – matrix154

+0

Я не знаю о такой настройке. Вы можете просматривать объекты Date в javascript и просто 'setUTCMonth' как' getUTCMonth() - 1' –

ответ

2

Вы можете использовать форматтера для коррекции месяца. Одно исправление 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

Смежные вопросы