我使用Highcharts制作了一个图表,该系列是从JSON加载的。
我有点新手来处理JSON文件......
我希望Highcharts在xAxis的标签上显示日期(格式:YYYY / MM / DD ie.2013 / 04/01)。
据我所知,因为我不能用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);
});
这会在xAxis标签上生成invalid date
。
但如果我删除这部分
formatter: function() {
return Highcharts.dateFormat('%Y/%m/%d', this.x);
}
没有返回任何错误,但结果如1. Apr
我不想显示:(
对此有任何解决方案吗?
谢谢。
答案 0 :(得分: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对象中,我可以使用getFullYear()
,getDate()
等方法处理值。
感谢。
答案 1 :(得分:1)
您的日期/时间格式错误。它不是day: '%Y/%m/%d'
,需要day: '%Y/%y/%e'
查看dateTimeLabelFormats Highcharts API reference。
答案 2 :(得分:1)
您可以使用http://api.highcharts.com/highcharts#xAxis.labels.formatter和Highcharts.dateFormat()http://api.highcharts.com/highcharts#Highcharts.dateFormat()
labels: {
formatter: function() {
return Highcharts.dateFormat('%Y/%m/%d',this.value);
}