2013-05-26 36 views
0

我用Highcharts製作了一個圖表,該圖表是從JSON加載的。Highcharts從JSON加載pointStart。毫秒到UTC時間?

我有點新的處理雖然JSON文件...

我想Highcharts顯示日期(formart:YYYY/MM/DD ie.2013/04/01)x軸的標籤上。

據我知道,因爲我不能寫在JSON這樣的事情,

"pointStart": [Date.UTC(2013, 4, 1)] 

我寫毫秒來代替。

我的JSON:

[ 
    { 
    "yAxis": 0, 
    "type": "column", 
    "name": "Y label", 
    "data": [0,0,153,179,122,126,120,101,110,95,142,88,82,92,115,101,141,162,0,0,0,0,0,7,6,0,10,0,9,4,56,86,66,61,87,72,74,60,83,74,50,73,61,56,90,78], 
    "pointStart": 1364774400000, 
    "pointInterval": 86400000 
},{ 
    "yAxis": 1, 
    "type": "line", 
    "name": "Y label 2", 
    "color": "#AA4643", 
    "data": [4980,4572,5554,6147,5268,5221,5263,5084,4906,5000,5198,4777,4790,4549,4158,4294,4891,4689,4432,3925,3708,3723,3623,3831,3787,4353,4809,5046,4989,4815,4315,4556,4502,4725,4537,4540,4654,4367,4589,4874,4837,5032,5046,4633,4561,4576], 
    "pointStart": 1364774400000, 
    "pointInterval": 86400000 
    } 
] 

而且我的javascript:

var options = { 
chart: { 
    renderTo: 'container' 
}, 
title: { 
    text: '' 
}, 
xAxis: { 
    type: 'datetime', 
    dateTimeLabelFormats: { 
     day: '%Y/%m/%d' 
    }, 
    labels: { 
     rotation: -45, 
     align: 'right', 
     formatter: function() { 
      return Highcharts.dateFormat('%Y/%m/%d', this.x); //this returns invalid date. 
     } 
    }, 
    title: { 
     text: '' 
    } 
}, 

... 

$.getJSON('test.json', function(data) { 
     options.series = data; 
     chart = new Highcharts.Chart(options); 
}); 

這x軸標籤上導致invalid date

但如果我刪除此部分

formatter: function() { 
    return Highcharts.dateFormat('%Y/%m/%d', this.x); 
} 

回報沒有錯誤,但像1. Apr結果,我不希望顯示:(

任何解決這個?

謝謝。

回答

1

你有錯誤的日期/時間格式,它不是day: '%Y/%m/%d',它需要是day: '%Y/%y/%e'dateTimeLabelFormats Highcharts API reference

+0

當然你必須把一切都在JSON報價。 – Tomalak

+1

@Tomalak哎呀我完全誤解了這一點,認爲他在做javascript和json的實際數據,編輯我的答案以刪除引號部分。 –

+0

實際上,我可以用''%Y /%m /%d''格式顯示日期。我在下面提出了一個解決方案。 – norixxx

2

我想出瞭解決辦法如下:

dateTimeLabelFormats: { 
    day: '%Y/%m/%d' 
}, 
labels: { 
    rotation: -45, 
    align: 'right', 
    formatter: function() { 
     var _date = new Date(this.value), 
      _y = _date.getFullYear(); 
      _m = _date.getMonth() + 1, 
      _d = _date.getDate(), 
      _result = _y + '/' + (_m < 10 ? "0"+_m : _m) + '/' + (_d < 10 ? "0"+_d : _d); 
     return _result; 
    } 
}, 
... 

放毫秒值Date對象中,我能夠處理值w /這樣的方法爲getFullYear()getDate()

謝謝。