首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用d3js.org将秒格式化为H:M:S

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

Stack Overflow用户
提问于 2015-03-11 23:01:54
回答 1查看 2.6K关注 0票数 4

我想使用d3 api将秒转换为H:M:S。

代码语言:javascript
运行
复制
 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。

请告诉我,

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-12 03:26:19

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

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

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

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

代码语言:javascript
运行
复制
var formatSeconds = d3.time.format("%H:%M:%S");

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

代码语言:javascript
运行
复制
var d = new Date(2014, 4, 1);

然后通过以下方法解析到Unix Epoch time:

代码语言:javascript
运行
复制
var u = +d; 

(有关进一步解释,请参阅d3文档页 )

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

代码语言:javascript
运行
复制
var newU = u + (3661*1000);

现在,使用以下方法将其转换回date对象:

代码语言:javascript
运行
复制
new Date(newU)

并传递到您的(修改的)函数中:

代码语言:javascript
运行
复制
formatSeconds(new Date(newU));

您显然可以遍历日期数组,或者任何适合您的数据。

希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28999023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档