【发布时间】:2017-07-07 07:12:37
【问题描述】:
我有一个如下所示的 Google 表格:
Date Sales
31/03/2017 1000
30/06/2017 2000
30/09/2017 1500
31/12/2017 2500
31/03/2018 4000
如果我在 Google 图表中使用 .arrayToDataTable 导入它并将第 0 列的类型设置为“日期”或“字符串” - 它不喜欢它,因为日期只是一个格式化的数字,即 43190 = 31/3 /2018。所以类型必须是“数字”,然后只在图表上显示基础数字而不是日期
我可以遍历每个行的值,我已经尝试用这个来改变它们
function formatDate(date) {
var d = new Date((date - 25569)*86400*1000),
locale = "en-us",
month = d.toLocaleString(locale, { month: "short" });
var formattedDate = d.getDay() + "/" + month + "/" + d.getFullYear();
return formattedDate
}
这会将数字转换为日期字符串 - 因此输入 43190 会返回 2018 年 3 月 31 日,但我仍然无法将列类型更改为“日期”
我可以将日期输出为字符串,但它们不按时间顺序排序,而是按字母顺序排序 - 我希望它们按时间顺序排列。
谁能告诉我哪里出错了?
编辑:
如果我将功能更改为
function formatDate(date) {
var d = new Date((date - 25569)*86400*1000)
return d
}
这现在将列值设置为完整的日期对象
但我收到一条错误消息“值 Sun Jun 30 2013 01:00:00 GMT+0100(GMT Summer Time)与列索引 0 中的类型编号不匹配”
现在这必须是指数据表的第 0 列,在原始表中,它是一个日期编号。我试过添加:
data.setColumnProperty(0, 'type' , 'date')
但似乎得到了同样的错误。
也许我没有在代码中的正确位置更改类型。
澄清:我从谷歌表中的一个范围中获取原始值,然后使用 .arrayToDataTable 将该范围转换为数据表。所以我不确定我是否可以在制作数据表时定义列类型,因此单独尝试:
data.setColumnProperty(0, 'type' , 'date')
【问题讨论】:
标签: javascript date charts google-visualization