2017-08-25 62 views
1

使用谷歌可视化我得到Unix时代时间戳并尝试将其转换为字符串数组。我尝试使用字符串谷歌图表,但得到一个错误谷歌可视化类型不匹配

Type mismatch. Value 2017-8-25 16:23:54,2017-8-25 16:11:54,... does not match type string in column index 0 

我的代码如下所示:

var jsonData = $.ajax({ 
    url: "JSONurl", 
    type: "GET", 
    dataType: 'json', 
}).done(function (dataJson) { 
    var mass = []; 
    for (var i = 0; i < dataJson.length; i++) { 
     //console.log(data[i].dateExecutes.toString()); 
     var dateEx = new Date(dataJson[i].dateExecutes); 
     var year = dateEx.getFullYear(); 
     var month = dateEx.getMonth()+1; 
     var day = dateEx.getDate(); 
     var hours = dateEx.getHours(); 
     var mins = dateEx.getMinutes(); 
     var secs = dateEx.getSeconds(); 
     var newDate = (year + '-' + month + '-' + day + ' ' + hours + ':' + mins + ':' + secs); 
     mass[i] = newDate; 
    } 
    //console.log(mass); 
    var data = new google.visualization.DataTable(); 
    //var date1 = new Date(jsonData.dateExecutes); 
    //var date2 = date1.toGMTString(); 
    //alert(jsonData.dateExecutes); 
    data.addColumn('string', mass); 
    data.addColumn('number', 'passed'); 
    data.addColumn('number', 'failed'); 
    //data.addColumn({type: 'number', role: 'tooltip', id: 'testRunId'}); 
    dataJson.forEach(function (row) { 
      data.addRow([ 
      mass, 
      row.passed, 
      row.failed 
     ]) 
    }); 

如何使用数组中的列?如何从数组中构建单元格? 请,任何帮助

回答

0

你要完成

如果你只是想格式化的日期字符串作为第一列, 建议使用谷歌的DateFormat

不需要什么并不很清楚两个循环,日期可以直接在forEach声明

看到下面的代码片段格式...

var jsonData = $.ajax({ 
    url: "JSONurl", 
    type: "GET", 
    dataType: 'json', 
}).done(function (dataJson) { 
    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'Date'); 
    data.addColumn('number', 'passed'); 
    data.addColumn('number', 'failed'); 

    var formatDate = new google.visualization.DateFormat({ 
    pattern: 'yyyy-MM-dd hh:mm:ss' 
    }); 

    dataJson.forEach(function (row) { 
    var rowDate = new Date(row.dateExecutes); 
    data.addRow([ 
     formatDate.formatValue(rowDate), 
     row.passed, 
     row.failed 
    ]); 
    }); 
}); 
+0

非常感谢!我自己实际上找到解决方案,但你的方式看起来更容易。但是你的方法没有显示正确的时间,例如: 2017-8-25 18:35:56 显示为: 2017-8-25 06:35:56 如何解决小时? – Ramare

+0

好吧,我自己修复了它。刚刚在formatDate模式中改变了HH。 – Ramare

+0

欢呼!我永远不会记得使用哪个h ...... – WhiteHat