Javascript Highcharts从JSON加载pointStart。毫秒到UTC时间?
我用Highcharts制作了一个图表,该系列是从JSON加载的 虽然我对处理JSON文件有点陌生 我希望Highcharts在xAxis的标签上显示日期(格式:YYYY/MM/DD ie.2013/04/01) 据我所知,因为我不能用JSON写这样的东西Javascript Highcharts从JSON加载pointStart。毫秒到UTC时间?,javascript,jquery,json,highcharts,Javascript,Jquery,Json,Highcharts,我用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",
"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标签上的日期无效
但是如果我去掉这个部分
formatter: function() {
return Highcharts.dateFormat('%Y/%m/%d', this.x);
}
不返回错误,但返回类似1的结果。Apr
我不想显示:(
有什么解决办法吗
谢谢。您的日期/时间格式有误。不是天:'%Y/%m/%d'
,它必须是天:'%Y/%Y/%e'
见。日期/时间格式有误。不是天:'%Y/%m/%d'
,它必须是天:'%Y/%Y/%e'
见。我想出了如下解决方案:
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;
}
},
...
dateTimeLabelFormats:{
日期:'%Y/%m/%d'
},
标签:{
轮调:-45,
对齐:“右”,
格式化程序:函数(){
var_date=新日期(此.value),
_y=_date.getFullYear();
_m=_date.getMonth()+1,
_d=_date.getDate(),
_结果=_y+'/'+(_m<10?“0”+_m:_m)+'/'+(_d<10?“0”+_d:_d);
返回结果;
}
},
...
将毫秒值放入日期对象,在该对象中我可以使用诸如getFullYear()
,getDate()
等方法处理值
谢谢。我想出了如下解决方案:
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;
}
},
...
dateTimeLabelFormats:{
日期:'%Y/%m/%d'
},
标签:{
轮调:-45,
对齐:“右”,
格式化程序:函数(){
var_date=新日期(此.value),
_y=_date.getFullYear();
_m=_date.getMonth()+1,
_d=_date.getDate(),
_结果=_y+'/'+(_m<10?“0”+_m:_m)+'/'+(_d<10?“0”+_d:_d);
返回结果;
}
},
...
将毫秒值放入日期对象,在该对象中我可以使用诸如getFullYear()
,getDate()
等方法处理值
谢谢。您可以使用和Highcharts.dateFormat()
您可以使用和Highcharts.dateFormat()
@Tomalak Oops我完全误解了这一点,以为他在用javascript和json来处理实际数据,编辑了我的答案以删除引号部分。实际上我能够用'%Y/%m/%d'
格式显示日期。我想出了下面的解决方案。@norixxx很高兴你弄明白了,但与t相比,这似乎有很多代码/复杂性他使用内置的日期时间标签格式option@Tomalak哎呀,我完全误解了这一点,以为他在使用javascript,而实际数据只使用json,编辑了我的答案以删除引号部分。事实上,我能够用'%Y/%m/%d'
格式显示日期。我想出了下面的解决方案。@norixxx很高兴你弄明白了这一点,但这是真的与Highcharts内置的dateTimeLabelFormats选项相比,似乎有很多代码/复杂性