2013-11-22 2 views
0

У меня есть ряд как это,как передать дату в Google картах

[[[Date {Wed Dec 18 2013 00:00:00 GMT+0530 (India Standard Time)}, 0, null, 19 more...], 
    [Date {Tue Dec 17 2013 00:00:00 GMT+0530 (India Standard Time)}, 0, null, 19 more...], 
    [Date {Mon Dec 16 2013 00:00:00 GMT+0530 (India Standard Time)}, 0, null, 19 more...], 
    ...4 more...]] 

ранее даты в строке выше была, как это,

['2013-11-18', 0, null, null, 0, null, null, 0, null, null, 0, null, null, 0, null, null, 0, null, null, 0, null, null] 

и так далее ... Так что, Я просто преобразован в формат выше. Но как передать его в диаграммы Google? Так как в настоящее время, я использовал:

googledata.addRows(chartdata) 

Если chartdata содержит выше линии, и я также пытался:

var googledata = google.visualization.arrayToDataTable(chartdata); 

У меня есть строки, как это,

googledata.addColumn('date', 'Date'); 

forloop 

{

googledata.addColumn('number', items[i]); 
googledata.addColumn({type:'string', role:'annotation'}); 
googledata.addColumn({type:'string', role:'annotationText'}); 

} 

всего 7 позиций здесь и я генерирую это использование для цикла.

помочь мне

ответ

3

Метод arrayToDataTable не поддерживает ввод даты, так что вы не можете использовать это. Ваши даты должны вводиться одним из двух способов, в зависимости от того, как вы загружаете данные. Если вы вручную создаете DataTable, выполните следующие действия:

var googledata = new google.visualization.DataTable(); 
googledata.addColumn('date', 'Date'); 
// add other columns 

, то вам нужно ввести свои даты как объекты Date. Например, эта дата Date {Wed Dec 18 2013 00:00:00 GMT+0530 (India Standard Time)} будет введена как new Date(2013, 11, 18) (месяцы индексируются с нулевой отметкой, так что декабрь равен 11 не 12). Если вы строите свой DataTable из строки JSON, как это:

var googledata = new google.visualization.DataTable(jsonData); 

, то вам нужно использовать пользовательский формат строки для даты. Он похож на стандартный объект Date, но является строкой и не содержит ключевое слово new; ваша примерная дата будет введена как "Date(2013, 11, 18)".

[Edit - как использовать DataView для преобразования даты строки в Дата объекты]

Вы можете также использовать DataView для преобразования даты строки в Дате объекты. Вам нужно проанализировать строку даты в своих составных частях и использовать их для создания объекта Date. Предполагая строку даты в формате 'yyyy-MM-dd' в колонке 0 вашего DataTable, это как бы вы преобразовать его в Date объекта:

var view = new google.visualization.DataView(googledata); 
view.setColumns([{ 
    type: 'date', 
    label: data.getColumnLabel(0), 
    calc: function (dt, row) { 
     var dateArray = dt.getValue(row, 0).split('-'); 
     var year = dateArray[0]; 
     var month = dateArray[1] - 1; // subtract 1 to convert to javascript's 0-indexed months 
     var day = dateArray[2]; //The day is the third split 
     return new Date(year, month, day); 
    } 
}, /* list of the rest of your column indices */]); 
+0

Но я получаю дату и другие значения столбцов, чтобы собрать динамически, как это, [» 2013-07-18 ', 0, null, null, 0, null, null, 0, null, null, 0, null, null, 0, null, null, 0, null, null, 0, null, null] –

+0

Если вы не хотите изменять способ ввода дат, вы можете использовать DataView для преобразования строк даты в объекты Date. Я уточню свой ответ с подробностями. – asgallant

Смежные вопросы