我有这样的一行,
[[[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循环生成。
帮帮我
答案 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 */]);