D3.js nvd3-将图表中的毫秒格式设置为h:m:s(时间段,而不是日期)

D3.js nvd3-将图表中的毫秒格式设置为h:m:s(时间段,而不是日期),d3.js,nvd3.js,D3.js,Nvd3.js,我设法在d3/nvd3图表中显示日期,我这样做是为了传递毫秒值: chart.xAxis .tickFormat(function(d) { return d3.time.format('%e, %H:%M')(new Date(d)) }); 我想在y轴上将毫秒显示为一段时间,如“6小时:23分钟:5秒” 这可能吗 提前谢谢 Muff试试这个 d3.time.format(“%H:%M min:%S sec”)(新日期()) 它将像这样格式化日期 05小时:34分钟

我设法在d3/nvd3图表中显示日期,我这样做是为了传递毫秒值:

chart.xAxis
     .tickFormat(function(d) {
        return d3.time.format('%e, %H:%M')(new Date(d))
});
我想在y轴上将毫秒显示为一段时间,如“6小时:23分钟:5秒”

这可能吗

提前谢谢

Muff

试试这个

d3.time.format(“%H:%M min:%S sec”)(新日期())

它将像这样格式化日期

05小时:34分钟:26秒

或者如果您不喜欢0填充数小时,请执行以下操作:

d3.time.format('%-H:%M min:%S sec')(新日期())

它将像这样格式化日期

5小时:37分钟:54秒

编辑

在这种情况下,您需要放置一个if块来执行检查并返回所需的格式,如下所示:

.tickFormat(function(d) {
       var date = new Date(d);
       if (date.getHours() == 0){ 
         return d3.time.format('%M min : %S sec')(d)
       } else {
         return d3.time.format('%-H h : %M min : %S sec')(d)
       }

}

这有一个缺点:当我有一个低于一小时的周期,比如21258毫秒,它会转换为“1小时:00分钟:21秒”。有没有办法只在有值的情况下显示“h”和“min”呢?对不起,当我使用它时,我得到了一个错误:
TypeError:d.getHours不是d3_time_formats.h的函数(d3js_d3.js?hash=54da9a2…:2643)
。有线索吗?d是日期实例吗?然后你不需要做新的日期(d)我发现了错误-a.)在if/else语句中你的解决方案中,它必须是Date而不是d。b.)小时似乎有一个标准值1,所以第一个if statement被忽略,所以对我有效的解决方案是:
var Date=new Date(d);date.setHours(date.getHours()-1);log(date.getHours());如果(date.getHours()==0){return d3.time.format('%M min:%S sec')(date)}其他{return d3.time.format('%-H H:%M min:%S sec')(date)}
为什么默认情况下小时设置为1?