【问题标题】:Google Motion Chart Date Format谷歌动态图表日期格式
【发布时间】:2015-02-12 16:08:40
【问题描述】:

我正在使用谷歌动态图表来绘制 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);

【问题讨论】:

  • 为什么不能不用google chart?

标签: html csv format google-visualization


【解决方案1】:

第一列需要是字符串,第二列需要是日期,因此请务必使用正确的数据类型初始化前两列:

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 });

【讨论】:

  • 那行不通,因为“新日期(dd/mm/yyyy)”是硬编码的,我的来自一个 csv 文件,其中新的日期命令无法识别
  • 那么你可能需要转换你的csv进来,见jquery-csv库和stackoverflow.com/questions/14211636/…
  • 我已经在使用 jquery-csv 读取文件,但谷歌图表无法识别来自文件的日期和月份
  • 请查看我上面的编辑,了解如何使用 jquery-csv 解析您的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
  • 2012-07-31
  • 1970-01-01
相关资源
最近更新 更多