javascript - 如何在 highstock 中的 x 轴上显示日期?

标签 javascript api highcharts

我需要在 x 轴上显示日期/时间。现在在x轴上有一些奇怪的数据00 00 00 001、00 00 00 002。我想看到1.08.2014 22.01.01(日.月.年时.分.秒)。 我的 JSON 数据:

[
    ["30 June 2014 19:14",24],
    ["30 June 2014 19:16",41],
    ["30 June 2014 19:16",12],
    ["30 June 2014 19:16",8]
] 

等等。 (时间,值(value))。

我的 Javascript 代码 - 它可以工作,但不能在 x 轴上显示日期/时间:

var seriesOptions = [],
seriesCounter = 0,


//My data
names = ['data_input_1', 'data_input_2'],colors = Highcharts.getOptions().colors;
//My graph captions
captions = ['Датчик 1', 'Датчик 2'];
//Type of my two graph - 2 lines
type = ['line', 'line'];

//Configure graph (now 2 names so 2 graph)
$.each(names, function(i, name) 
{
//get data
$.getJSON('../graph/select_data.php?'+ name.toLowerCase() +'',  

function(data) 
{
seriesOptions[i] = 
{
name: captions[i],
data: data,
type:type[i],
//I think- this is the place for code, that i want
// it doesnot work here categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
// all other code here - work well

};

seriesCounter++;
if (seriesCounter == names.length){createChart();}
});
});

结果:

Result

如何在 highstock 中的 x 轴上显示我的两条线的日期?

最佳答案

问题出在您的 JSON 数据上。 Highstock 无法立即使用该格式来显示 datetime在 x 轴上。问题是您的字符串(例如“30 June 2014 19:14”)不是 timestamps

x 轴需要以毫秒为单位的时间戳(自 1970 年 1 月 1 日起)。请注意,从其他来源收到的某些时间戳可能以秒为单位,而不是毫秒。如果这是问题所在,您必须将它们乘以 1000。

当使用字符串时,它对 Highstock 来说没有任何意义,因此 Highstock 只是假装数据的时间戳是 0, 1, 2...,转换为 00:00:00.000(0 毫秒)、00:00 :00.001(1 毫秒)、00:00:00.002(2 毫秒)...

您需要将日期的字符串表示形式转换为时间戳。我不确定您是否可以操纵接收 JSON 的格式,但如果不能,您可以对其进行后处理以转换数据,如下所示 ( JSFiddle example ):

var data = [
    ["30 June 2014 19:15",24],
    ["30 June 2014 19:16",41],
    ["30 June 2014 19:17",12],
    ["30 June 2014 19:18",8]
];

var timestampData = [];

for(i in data) {
    timestampData.push([new Date(data[i][0]).getTime(), data[i][3]]);
}


$('#container').highcharts({
    ...
    series: [{
        data: timestampData
    }]
});

这里的本质是 new Date(data[i][0])将您的字符串解析为日期对象,其中包含年、月、日的值...然后您使用 getTime()该对象的函数来获取时间戳。

关于javascript - 如何在 highstock 中的 x 轴上显示日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25084790/

相关文章:

javascript - 借助数组的对象类别值拆分数组 - Javascript - High Chart

javascript - 使用来自 Facebook 的 JavaScript 方法

ios - 多语言错误

javascript - 根据 highcharts 中的某些条件格式化样式

javascript - HighCharts 图表有一半时间无法加载

c# - 如何以编程方式使用 SVN 和 .NET 进行文件版本控制?

javascript - 我可以使用哪些 javascript 或 css 库来实现这种下拉效果?

javascript - 使用 = 和 : in javascript 有什么区别

javascript - 如何在不改变原始数组的情况下更改对象键

api - 研究 IVR 软件开发