如何将日期传递到谷歌图表

时间:2013-11-22 12:22:22

标签: google-visualization

我有这样的一行,

[[[Date {Wed Dec 18 2013 00:00:00 GMT+0530 (India Standard Time)}, 0, null, 19 more...], 
  [Date {Tue Dec 17 2013 00:00:00 GMT+0530 (India Standard Time)}, 0, null, 19 more...], 
  [Date {Mon Dec 16 2013 00:00:00 GMT+0530 (India Standard Time)}, 0, null, 19 more...], 
  ...4 more...]]

早些时候上面一行中的日期是这样的,

['2013-11-18', 0, null, null, 0, null, null, 0, null, null, 0, null, null, 0, null, null, 0, null, null, 0, null, null] 

依旧......所以,我刚刚转换成上面的格式。但是,如何将其传递到谷歌排行榜?从现在开始,我用过:

googledata.addRows(chartdata)

如果chartdata包含以上行,我也尝试过:

var googledata = google.visualization.arrayToDataTable(chartdata); 

我有这样的行,

googledata.addColumn('date', 'Date');

forloop 

{

googledata.addColumn('number', items[i]);
googledata.addColumn({type:'string', role:'annotation'}); 
googledata.addColumn({type:'string', role:'annotationText'}); 

}

共有7个项目,并使用for循环生成。

帮帮我

1 个答案:

答案 0 :(得分:4)

arrayToDataTable方法不支持输入日期,因此您无法使用该方法。您的日期需要以两种方式之一输入,具体取决于您加载数据的方式。如果您手动构建DataTable,请执行以下操作:

var googledata = new google.visualization.DataTable();
googledata.addColumn('date', 'Date');
// add other columns

然后您需要输入日期作为日期对象。例如,此日期Date {Wed Dec 18 2013 00:00:00 GMT+0530 (India Standard Time)}将输入为new Date(2013, 11, 18)(月份为零索引,因此12月为11而不是12)。如果您正在从JSON字符串构造DataTable,如下所示:

var googledata = new google.visualization.DataTable(jsonData);

然后您需要为日期使用自定义字符串格式。它看起来类似于标准的Date对象,但它是一个字符串,不包含new关键字;您的示例日期将输入为"Date(2013, 11, 18)"

[编辑 - 如何使用DataView将日期字符串转换为Date对象]

您还可以使用DataView将日期字符串转换为Date对象。您需要将日期字符串解析为其组成部分,并使用它们构造Date对象。假设DataTable的第0列中的日期字符串格式为'yyyy-MM-dd',这就是将其转换为Date对象的方式:

var view = new google.visualization.DataView(googledata);
view.setColumns([{
    type: 'date',
    label: data.getColumnLabel(0),
    calc: function (dt, row) {
        var dateArray = dt.getValue(row, 0).split('-');
        var year = dateArray[0];
        var month = dateArray[1] - 1; // subtract 1 to convert to javascript's 0-indexed months
        var day = dateArray[2]; //The day is the third split
        return new Date(year, month, day);
    }
}, /* list of the rest of your column indices */]);