如何格式化Highcharts的(x,y)对数据的日期时间

时间:2014-09-22 07:44:07

标签: javascript jquery json datetime highcharts

我的序列化方法产生如下的日期时间字符串:" 2014-07-09T12:30:41Z"

为什么以下代码不起作用?

$(function () {
$('#container').highcharts({
    xAxis: {
        type: 'datetime'
    },

    series: [{
        data: [
            {x:"2014-07-09T12:30:41Z",y: 29.9},
            {x:"2014-09-09T12:30:41Z", y:71.5}
        ],
        name: "Teste"
    }]
});

});

这段代码完美无缺:

$(function () {
$('#container').highcharts({
    xAxis: {
        type: 'datetime'
    },

    series: [{
        data: [
            {x:Date.UTC(2014, 0, 1),y: 50},
            {x:Date.UTC(2014, 2, 1), y:20}
        ],
        name: "Teste2"
    }]
});

});

如何转换日期时间格式或配置高级图表以使用我的数据?

2 个答案:

答案 0 :(得分:5)

显然,Highcharts必须期望日期为自“1970年1月1日00:00:00”世界时间以来的毫秒数,这是Date.UTC()检索的内容,因此您可以完成相同的操作:

series: [{
    data: [
        {x:(new Date("2014-07-09T12:30:41Z")).getTime(),y: 29.9},
        {x:(new Date("2014-09-09T12:30:41Z")).getTime(), y:71.5}
    ],
    name: "Teste"
}]

答案 1 :(得分:3)

您可以在图表中使用之前预处理数据。示例 - http://jsfiddle.net/Jx5n2/3851/

var data = [{
    x: "2014-07-09T12:30:41Z",
    y: 29.9
}, {
    x: "2014-09-09T12:30:41Z",
    y: 71.5
}],
len = data.length,
i = 0,
outData = [];

for (i = 0; i < len; i++) {
    outData[i] = {
        x: Date.parse(data[i].x),
        y: data[i].y
    }
}

$(function () {
    $('#container').highcharts({
        xAxis: {
            type: 'datetime'
        },
        series: [{
            data: outData
        }]

    });
});