2015-06-02 137 views
0

我想绘制包含日期时间值的x轴的Highchart。Highcharts日期时间X轴无效日期

例JSON数据点:

"DATA": [ 
     ["June, 01 2015 00:00:00", "01\/06\/2015 02:51 PM", "June, 01 2015 14:51:00", "Date.UTC(2015,6,1,14,51)", 1433134260, null, 12.17], 
     ["June, 01 2015 00:00:00", "01\/06\/2015 02:53 PM", "June, 01 2015 14:53:00", "Date.UTC(2015,6,1,14,53)", 1433134380, 1.28, null], 
     ["June, 01 2015 00:00:00", "01\/06\/2015 02:54 PM", "June, 01 2015 14:54:00", "Date.UTC(2015,6,1,14,54)", 1433134440, null, 9.58], 
     ["June, 01 2015 00:00:00", "01\/06\/2015 02:56 PM", "June, 01 2015 14:56:00", "Date.UTC(2015,6,1,14,56)", 1433134560, null, 7.78], 
     ["June, 01 2015 00:00:00", "01\/06\/2015 02:58 PM", "June, 01 2015 14:58:00", "Date.UTC(2015,6,1,14,58)", 1433134680, 1.7, null], 
     ["June, 01 2015 00:00:00", "01\/06\/2015 02:59 PM", "June, 01 2015 14:59:00", "Date.UTC(2015,6,1,14,59)", 1433134740, null, 5.25] 
] 
从最后2列

除了,所有的列表示相同的日期时间。

我需要绘制日期时间列的最后2列。

我试图用Date.UTCmillisecond列作图,但得到了invalid date错误。

x轴定义为datetime

你可以请建议使用正确的日期时间格式?

编辑1:我相信UTC日期格式Date.UTC(2015,6,1,14,51)而不是"Date.UTC(2015,6,1,14,51)"应该解决这个问题。现在尝试进行转换。

编辑2JSFiddle 小提琴按预期工作。

但是,在代码中使用JSON调用时,发生错误。

JSON[ { "EMAIL": 1.05 "PROBE_START_TIME_MS": 1433228764000, }, { "EMAIL": 1.82, "PROBE_START_TIME_MS": 1433228944000, }, { "EMAIL": "1.56", "PROBE_START_TIME_MS": 1433229064000, }, { "EMAIL": 1.6, "PROBE_START_TIME_MS": 1433229244000, }]

代码

$.each(jsonResult, function(key,index) { 
      Email_Time.data.push(this.PROBE_START_TIME_MS, this.EMAIL);    
     }); 

输出

Current Output

艾迪牛逼3:工作液

$.getJSON("Json_Data.cfm", {}, function(EmailResult) { 
     var Email_Time = { 
         name: "Email", 
         type: "line", 
         color: "#A5BC4E", 
         data: [], 
         marker: { 
            radius: 1 
           } 
       }; 

     $.each(EmailResult.DATA, function() { 
       //alert(this); 
       Email_Time.data.push(this);    
     }); 

      options.series[0] = Email_Time; 
      chart = new Highcharts.Chart(options); 
     });  
+1

三件事:'Date.UTC(2015,6,1,14,59)'是七月一日,不是六月。请记住,JS中的月份是0-11,其中0- Janyary,12月1日。其次,为什么你不能使用时间戳(第5列)?那就是时间戳(以秒为单位),所以简单地乘以1000即可。最后一件事,你说所有的日期都是一样的,但时间戳是不同的?例如:'new Date(1433134740000)'=>'Mon Jun 01 2015 06:59:00 GMT + 0200'。 –

+0

@PawełFus:我得到正确的结果'新日期(1433134740000)'=>'星期一2015年6月1日14:59:00 GMT + 1000(美国东部标准时间)'。必须是不同的客户端位置问题。无论如何,我仍然无法在图表上显示正确的日期。当使用毫秒为x轴时,它仍然显示'无效日期'。 –

+0

由于x需要解析时间戳,并且不能使用函数行Date.UTC()。为了准备JSON,你应该转换时间。 –

回答

0

以下解决方案为我工作:

$.getJSON("Json_Data.cfm", {}, function(EmailResult) { 
     var Email_Time = { 
         name: "Email", 
         type: "line", 
         color: "#A5BC4E", 
         data: [], 
         marker: { 
            radius: 1 
           } 
       }; 

     $.each(EmailResult.DATA, function() { 
       //alert(this); 
       Email_Time.data.push(this);  // The line which had the issue.  
     }); 

      options.series[0] = Email_Time; 
      chart = new Highcharts.Chart(options); 
     });