我想创建一个图表来显示我在10k跑步中的时间。一切都正常,我唯一的问题是,我想格式化时间的显示方式。
目前,时间显示为表示秒数的数字。例如,30分钟的运行时间降至10800秒。谷歌提供的格式化程序确实涵盖了很多东西,但我对他们提供的内容并不满意。
http://code.google.com/apis/chart/interactive/docs/reference.html#formatters
遗憾的是,没有关于如何实现自己的格式化程序的信息。我有可能扩展格式化程序,还是有需要实现的接口?
我要做的第一件事就是将数字10800解析为30:00.00(30分钟,0秒,0毫秒)的美好时光。 也许这已经可以使用patternformatter,但我不知道如何,因为涉及计算并且不知道如何在patternformatter中实现它。
感谢您的帮助。 约翰尼
答案 0 :(得分:3)
将DateFormat与自定义模式一起使用。 E.g:
google.visualization.DateFormat({pattern: "mm:ss.SSS"});
需要注意的是,这会显示JS Date对象的时间,因此您需要将运行时间作为JS日期提供。因此,要么指定数据采样的实际时间。或者,如果您只想显示自开始运行以来的相对时间,您可以执行以下操作:
new Date(new Date('Jan 01 2000').getTime() + sampleTime)
...其中sampleTime是每个采样点的时间(以毫秒为单位)。 (这只是将时间设置为自2000年1月1日午夜起的毫秒数,因此小时/分钟/秒将反映您的运行时间)
答案 1 :(得分:0)
遇到了一个类似的问题,一个geochart有几秒钟,需要把它显示为hh:mm:ss。无法管理,但我能够得到mm:ss是可以接受的
我将总秒数转换为小数,为mm.ss.例如200秒是3:20因此我将其标记为3.20并将值传递给图表,然后在geochart上我使用数字格式化器来使用:作为小数格式化程序
var formatter = new google.visualization.NumberFormat({
decimalSymbol: ':'
});
默认的小数位数为2,因此显示为3:20。