d3.js - 如何将秒格式化为 H :M:S using d3js. org

标签 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。

请指教,

谢谢

最佳答案

有两件事;第一个是 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/

相关文章:

d3.js - 使用强制布局避免 d3.js 中的链接交叉/重叠

javascript - 使用 d3 js 引用不同的元素集

javascript - 同一 svg 上的 map + 图例

javascript - D3 plus 将文本包裹在圆圈中

javascript - 基于Color Picker修改Force Layout中的节点颜色

jquery - 从 d3.js 中的 Illustrator 导出的 SVG 中选择重复的 ID

javascript - D3.js 完全在 svg 容器内创建三 Angular 形

d3.js - 带点的 D3 条形图背景

javascript - 更新时无法删除 D3 中的圈子

javascript - 在 d3.js 中解析字符串到日期