2011-07-06 86 views
6

我想創建一個圖表來顯示我在10k運行時的時間。一切工作都應該如此,唯一的問題是,我想格式化時間顯示。爲Google Charts編寫自定義格式化程序Api

當前時間顯示爲代表秒的數字。例如,30分鐘運行時間降至10800秒。 google提供的格式化程序覆蓋了很多東西,但我並不滿意它們提供的內容。

http://code.google.com/apis/chart/interactive/docs/reference.html#formatters

可悲的是如何實現自己的格式化的信息。有沒有可能擴展格式化程序或者是否有需要實現的接口?

我會做的第一件事就是將數字10800解析爲像30:00.00(30分鐘,0秒,0毫秒)的好時間。 也許這已經是可能的patternformatter,但我不明白如何,因爲有計算涉及,不知道如何在patternformatter實現這一點。

謝謝你的幫助。 Johnny

+0

儘管在這裏沒有必要,但在編寫自定義格式化程序[這裏]有一個很好的答案(http://stackoverflow.com/questions/7286368/how-to-write-a-custom-formatter-for- google-datatables-for-use-on-visualization) – PerryW

回答

3

使用DateFormat自定義模式。例如: -

google.visualization.DateFormat({pattern: "mm:ss.SSS"}); 

需要說明的是,這顯示時間的日一個JS Date對象的,所以你需要提供運行時間爲JS日期。因此,要麼指定您的數據採樣的實際時間。或者,如果你想只顯示自您開始運行的相對時間,你可以做這樣的事情:

new Date(new Date('Jan 01 2000').getTime() + sampleTime) 

...其中sampleTime以毫秒爲單位每個採樣點的時間。 (這只是將時間設置爲01/01/2000午夜以來的毫秒數,所以小時/分鐘/秒將反映您的運行時間)

+0

因爲我使用帶註釋的時間圖表,當涉及到可能的y值時,事情很奇怪。我無法使用日期值作爲y值,因此切換到YUI 3圖表API。 – Johnnycube

+0

最後一點是一個不錯的破解! +1的獨創性。 –

+0

如何將'new Date(new Date('Jan 01 2000')。getTime()+ sampleTime)'作爲json?在我的應用程序中,該行會產生類型不匹配,因爲它將它解釋爲字符串。 – Noz

0

遇到類似的問題,其中包含總秒數和需要顯示的地理位置如hh:mm:ss。無法管理,但我能夠得到它:毫米:ss這是可以接受的

我將總秒數轉換爲小數點,如mm.ss.例如200秒是3:20所以I標記以此爲3.20和傳遞的值的圖表作爲然後在geochart我用一個數字格式化的使用方法:作爲小數點格式化

var formatter = new google.visualization.NumberFormat({ 
    decimalSymbol: ':' 
}); 

默認小數位是2因此它顯示爲3:20。