我想使用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。
请告诉我,
谢谢
发布于 2015-03-12 03:26:19
有两件事:第一件事是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 time:
var u = +d; (有关进一步解释,请参阅d3文档页 )
通过向u添加毫秒数,以小时、分钟和秒为单位创建时间。例如,要添加3661秒,请尝试:
var newU = u + (3661*1000);现在,使用以下方法将其转换回date对象:
new Date(newU)并传递到您的(修改的)函数中:
formatSeconds(new Date(newU));您显然可以遍历日期数组,或者任何适合您的数据。
希望这能有所帮助。
https://stackoverflow.com/questions/28999023
复制相似问题