JSON日期格式转换为Highcharts日期格式

7
“请问有人能够指导我如何获取这样的JSON对象日期时间吗?”
 {
    value="01/01/2013 08:00", 
    key=5.5
 }

将日期时间转换为适合在Highcharts中使用的javascript格式。
[Date.UTC(2013, 0, 1,08,00), 5.5].

更新:
这是我正在尝试做的事情:
var chart;

$(document).ready(function () {

    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            zoomType: 'x'
        },
        yAxis: {
            type: 'double',
            min: 0
        },
        xAxis: {
            type: 'datetime',
            labels: {
                formatter: function () {
                    return Highcharts.dateFormat('%a %d %b %H:%M', this.value);
                },
                dateTimeLabelFormats: {
                    minute: '%H:%M',
                    hour: '%H:%M',
                    day: '%e. %b',
                    week: '%e. %b',
                    month: '%b \'%y',
                    year: '%Y'
                }
            }
        },
        series: [{
            name: 'MyData1',
            data: []
        }, {
            name: 'MyData2',
            data: []
        }]

    });

    chart.series[0].setData([
        [Date.UTC(2013, 0, 1, 08, 00), 4.4],
        [Date.UTC(2013, 0, 1, 12, 00), 6.0],
        [Date.UTC(2013, 0, 1, 17, 00), 7.7],
        [Date.UTC(2013, 0, 1, 22, 00), 5.8]
    ]);
    chart.series[1].setData([
        [Date.UTC(2013, 0, 1, 08, 30), 0.4],
        [Date.UTC(2013, 0, 1, 10, 00), 0.0],
        [Date.UTC(2013, 0, 1, 16, 00), 0.7],
        [Date.UTC(2013, 0, 1, 20, 00), 0.8]
    ]);
});

这是在 jsFiddle 上的链接:here
var datatype1=[];
var datatype2= [];

    for(index in userReadingsJsonCollection.items){
          if(userReadingsJsonCollection.items[index].ReadingsData.Reading_Type==type1){
                datatype1.push( 
[Date.parse(userReadingsJsonCollection.items[index].ReadingsData.Rec_DateTime),
                userReadingsJsonCollection.items[index].ReadingsData.Reading]
                );
            }
          if(userReadingsJsonCollection.items[index].ReadingsData.Reading_Type==type2){
                datatype2.push(
                [userReadingsJsonCollection.items[index].ReadingsData.Rec_DateTime,
                userReadingsJsonCollection.items[index].ReadingsData.Reading]              
                );
            }
    }

我得到的结果是 [[1357027200000,5.5]],这很好用。
1个回答

12
如果你的时间已经是UTC,那么只需要简单地执行以下操作:
Date.parse("01/01/2013 08:00")

编辑

假设您的数据返回为有效的JSON:

var jsonObj = {value:"01/01/2013 08:00", key:5.5}; 

var seriesOneData = [];
seriesOneData.push([Date.parse(jsonObj.value),jsonObj.key]);

谢谢马克,但这在这种情况下行不通,我已经更新了我的问题以进行说明。 - agri
我不明白你想表达什么。{value="01/01/2013 08:00", key=5.5} 不是有效的 JSON 格式,它是从哪里来的?如果它是有效的 JSON,你要将其转换为数组,例如 [Date.UTC(2013, 0, 1,08,00), 4.4],但是 4.4 是从哪里来的?你是不是想表达的是 5.5? - Mark
我有一个JSON对象,它包含键值对,例如日期和读数。对于4.4和5.5的混淆,把它们视为相同的值。我想从JSON动态加载图表,但在此之前,我需要将日期格式更改为Highcharts可接受的格式。 - agri
另一种选择是在后端(生成JSON的任何内容)将您的值从日期字符串更改为日期时期,而不是像我上面所做的那样在Javascript中进行更改。 - Mark
@Mark,你能否在X轴上以“日/月/年”为分辨率放置第二个fiddle的示例。当使用没有“日期”的数据时,pointInterval将正确显示天数,但如果指定[[Date.UTC(2012, 2, 7, 10), 5]],它会在X轴上显示时间而不是日期。我一直在尝试解决这个问题,但对于刚开始使用highcharts的人来说,文档并不完全清晰。 - JMHeap
这个答案没有意义。如果你必须在客户端重度预处理数据,那么将其通过 JSON 返回的目的就失败了。 - Cerin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接