如何使用d3js.org将秒格式化为H:M:S

时间:2015-03-11 23:01:55

标签: d3.js

我想使用d3 api将秒转换为H:M:S。 目前正在做:

 var parseSeconds = d3.time.format("%S").parse;
 var formatSeconds = d3.format("%H:%M:%S");
 var s = 3661;
 console.log( formatSeconds( parseSeconds(s) ) );

预期结果01:01:01

我知道Moments.js,但我想坚持使用d3。

请指教,

由于

1 个答案:

答案 0 :(得分:3)

有两件事;第一个是d3期待一个日期对象而你正在传递一个数字;第二个是你需要使用时间格式器。这些问题给你意想不到的结果。

您可以完全避免使用库,只需编写一个简单的自定义函数。

或者,您可以将秒添加到方便的数据中,并使用您已发布的代码的修改版本。

var formatSeconds = d3.format("%H:%M:%S");行应为:

var formatSeconds = d3.time.format("%H:%M:%S");

因此,使用第二种方法选择时间,例如2014年1月1日,并通过以下方式创建日期对象:

var d = new Date(2014, 4, 1);

然后通过以下方式解析Unix Epoch时间:

var u = +d; 

(有关详细说明,请参阅d3 doc's page

通过向u添加毫秒数,以小时,分钟和秒为单位创建时间。例如。要添加3661秒,请尝试:

var newU = u + (3661*1000);

现在,使用以下命令将其转换回日期对象:

new Date(newU)

并传入你的(修改过的)函数:

formatSeconds(new Date(newU));

您显然可以遍历一系列日期,或者适合您的数据。

希望这有帮助。