2015-10-05 94 views
2

我一直在嘗試使用谷歌圖表反應。它運行良好,但我已經將數據從本地文件移動到mongoDB,這給了我一個日期問題。 使用我的測試數據,我使用新日期(...)在谷歌圖表中添加了正確的數據格式。移動數據之後,我從DB獲取數據爲JSON,這給了我一個日期問題,這些日期只是在我的圖表上打印爲字符串。谷歌圖表json日期反應

我已閱讀谷歌的圖表文檔,他們會自動從JSON字符串重建日期對象,如果我按照以下順序保存數據'Date(2015,3,3)'。

我的數據是這樣的:

{ data: 
    [ [ 'Dato', 'Place1', 'Place2' ], 
    [ 'Date(2015-9-2)', 100, 0 ], 
    [ 'Date(2015-9-3)', 850, 0 ], 
    [ 'Date(2015-9-4)', 1125, 0 ], 
    [ 'Date(2015-9-5)', 0, 1900 ] ], 
    path: 'Gennemsnitlig liggetid fordelt på kommuner' 
} 

它仍然被解釋爲字符串的谷歌圖表英寸我見過其他例子,他們在哪裏使用行和列。不知道這是否是我的錯誤。這裏有一個來自Stackoverflow的例子:

{"rows":[{"c":[{"v":"Date(year, month)"},{"v":"2095"}]}],"cols": 
[{"type":"datetime","label":"DTU"},{"type":"number","label":"COUNT"}]} 

所以,總結一下。使用我的測試數據時一切正常。當我從數據庫中獲取數據時,該圖仍然有效。但是,我從數據庫收到的字符串日期,並未被Google圖表識別爲日期。

盼望一些幫助或反饋

問候

馬丁

回答

0

我在谷歌的圖表文檔閱讀,如果我是他們自動重建從JSON-字符串 日期對象,請將數據保存在以下訂單'日期(2015,3,3)' '中。

你在哪裏看到這個?無論哪種方式,正確的格式是

[ new Date('2015-9-2'), 100, 0 ] 

valid dateString

[ new Date(2015,9,2), 100, 0 ] 

等你拿在圖表中這樣提出的正確的日期值可以消毒數據:

var testData = { data: 
    [ [ 'Dato', 'Place1', 'Place2' ], 
    [ 'Date(2015-9-2)', 100, 0 ], 
    [ 'Date(2015-9-3)', 850, 0 ], 
    [ 'Date(2015-9-4)', 1125, 0 ], 
    [ 'Date(2015-9-5)', 0, 1900 ] ], 
    path: 'Gennemsnitlig liggetid fordelt på kommuner' 
}  

for (var i=1;i<testData.data.length;i++) { 
    testData.data[i][0] = new Date(testData.data[i][0].match(/\(([^)]+)\)/)[1]); 
} 

以上僅提取(..)之間的日期字符串,並將第一列中的字符串替換爲new Date(..)

演示 - >http://jsfiddle.net/xxvymn7o/

enter image description here

+0

您在客戶端循環,似乎這樣的伎倆。我現在將純日期ISO字符串作爲JSON發送,並在客戶端執行for循環。然後它工作。 非常感謝大衛。 –

+0

@MartinKure - 不客氣!您可以考慮將答案標記爲已接受。 – davidkonrad