我使用谷歌运动图表来绘制csv文件中的一些数据。文件看起来像这样
411,(10/4/2014),24,21
371,(10/5/2014),247,239
959,(10/6/2014),266,23
680,(10/7/2014),211,24
但是每次我试图让它来绘制数据图时我都会得到错误“第一列和第二列必须是实体和时间。”。文件中的日期需要采用什么格式?
我修改了jlee-tessik的想法并提出了以下代码,它成功地将任何dd / mm / yyyy转换为日期。感谢
$.get(csvFile, function(csvString) {
var arrayData = $.csv.toArrays(csvString, {onParseValue: $.csv.hooks.castToScalar});
for(i = 1; i < arrayData.length; ++i)
{
arrayData[i][1] = new Date (arrayData[i][1].replace(/\//g, ','));
}
var data = new google.visualization.arrayToDataTable(arrayData);
答案 0 :(得分:0)
第一列需要是一个字符串,第二列需要是一个日期,所以一定要用正确的数据类型初始化前两列:
data.addColumn('string', 'Field1');
data.addColumn('date', 'Date');
并假设您的第一列是您想要的标签:
data.addRows([
['411', new Date (2014,10,4), 24, 21],
['371', new Date (2014,10,5), 247, 239],
['959', new Date (2014,10,6), 266, 23],
['680', new Date (2014,10,7), 211, 24]
]);
编辑:我一开始并不理解你的问题。 jquery-csv似乎不支持使用其基本解析进行日期解析,但您可以添加自定义挂钩以根据需要格式化数据。在这里第一行,我抓住第2列,剥离括号,并将其转换为日期。
var col2date = function(value, state) {
if(state.colNum == 2) {
return new Date (value.replace(/[{()} ]/g, ''));
}
return value;
}
var dataRows = $.csv.toArrays("411,(10/4/2014),24,21", { onParseValue: col2date });