我想使用 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。
请指教,
谢谢
最佳答案
有两件事;第一个是 d3 期待一个日期对象,而你正在传递一个数字;第二个是您需要使用时间格式化程序。这些问题会给您带来意想不到的结果。
您可以完全避免使用库,而只需编写一个简单的自定义函数。
或者,您可以将秒数添加到方便的数据中,并使用您发布的代码的修改版本。var formatSeconds = d3.format("%H:%M:%S");
行应为:
var formatSeconds = d3.time.format("%H:%M:%S");
因此,使用第二种方法选择一个时间,比如 01/01/2014,并通过以下方式创建一个日期对象:
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));
您显然可以遍历日期数组,或者任何适合您的数据。
希望这可以帮助。
关于d3.js - 如何将秒格式化为 H :M:S using d3js. org,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28999023/