我有一个谷歌片采取了谷歌的可视化数据表列日期列看起来像这样:如何包括从电子表格
Date Sales
31/03/2017 1000
30/06/2017 2000
30/09/2017 1500
31/12/2017 2500
31/03/2018 4000
如果我导入此使用.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的输入返回31 /三月/ 2018,但我仍然无法改变列类型为“日期”
我所能输出的日期作为字符串,但他们不按时间顺序排序,但按字母顺序 - 我希望他们按时间顺序排列。
有人可以告诉我我要去哪里吗?
编辑:
如果我改变功能
function formatDate(date) {
var d = new Date((date - 25569)*86400*1000)
return d
}
现在这样设置列值,以完整的日期对象
,但我得到一个错误说“值太阳6月30日2013 01:00:00 GMT + 0100(GMT夏令时)与列索引0中的类型编号不匹配“
现在,这必须引用数据表列零,原始表格,是日期编号。我试着添加:
data.setColumnProperty(0, 'type' , 'date')
但似乎得到了同样的错误。
也许我不会改变代码中正确点的类型。
澄清:我从谷歌工作表中获取范围的原始值,然后使用.arrayToDataTable将该范围转换为数据表。所以,我不知道我可以做的数据表,因此单独与尝试的角度定义列类型:
data.setColumnProperty(0, 'type' , 'date')
是的。我已经更新了这个问题来反映这一点。仍然没有打球...... – MrPea
哦,我差不多在那里....我加入到数组源中{label:'Period',type:'date'},现在我已经知道了日期。所以我会尝试在过滤器和轴中格式化它们 – MrPea
您正在使用.arrayToDataTable转换为数据表。在我的例子中,我使用新的google.visualization.DataTable()创建了一个dataTable;然后添加具有类型的列和行。另外我无法找到文档中的函数setColumnProperty。你在创建什么类型的图表? – Mike