2017-07-06 79 views
0

我有一个谷歌片采取了谷歌的可视化数据表列日期列看起来像这样:如何包括从电子表格

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') 

回答

0

你必须在日期型列提供完整的日期对象。

日期时良好的文档都可以在这里 https://developers.google.com/chart/interactive/docs/datesandtimes#axesgridlinesticks

发现日期和销售的一个例子是

var data = new google.visualization.DataTable(); 
     data.addColumn('date', 'Date'); 
     data.addColumn('number', 'Sales'); 

     data.addRows([ 
      [new Date(2015, 0, 1), 5], [new Date(2015, 0, 2), 7], [new Date(2015, 0, 3), 3], 
      [new Date(2015, 0, 4), 1], [new Date(2015, 0, 5), 3], [new Date(2015, 0, 6), 4], 
      [new Date(2015, 0, 7), 3], [new Date(2015, 0, 8), 4], [new Date(2015, 0, 9), 2], 
      [new Date(2015, 0, 10), 5], [new Date(2015, 0, 11), 8], [new Date(2015, 0, 12), 6], 
      [new Date(2015, 0, 13), 3], [new Date(2015, 0, 14), 3], [new Date(2015, 0, 15), 5], 
      [new Date(2015, 0, 16), 7], [new Date(2015, 0, 17), 6], [new Date(2015, 0, 18), 6], 
      [new Date(2015, 0, 19), 3], [new Date(2015, 0, 20), 1], [new Date(2015, 0, 21), 2], 
      [new Date(2015, 0, 22), 4], [new Date(2015, 0, 23), 6], [new Date(2015, 0, 24), 5], 
      [new Date(2015, 0, 25), 9], [new Date(2015, 0, 26), 4], [new Date(2015, 0, 27), 9], 
      [new Date(2015, 0, 28), 8], [new Date(2015, 0, 29), 6], [new Date(2015, 0, 30), 4], 
      [new Date(2015, 0, 31), 6], [new Date(2015, 1, 1), 7], [new Date(2015, 1, 2), 9] 
     ]); 

你可以比添加以下选项来格式化你的日期

hAxis: { 
    format: 'MM/dd/yyyy' 
} 
+0

是的。我已经更新了这个问题来反映这一点。仍然没有打球...... – MrPea

+0

哦,我差不多在那里....我加入到数组源中{label:'Period',type:'date'},现在我已经知道了日期。所以我会尝试在过滤器和轴中格式化它们 – MrPea

+0

您正在使用.arrayToDataTable转换为数据表。在我的例子中,我使用新的google.visualization.DataTable()创建了一个dataTable;然后添加具有类型的列和行。另外我无法找到文档中的函数setColumnProperty。你在创建什么类型的图表? – Mike