D3.js nvd3-将图表中的毫秒格式设置为h:m:s(时间段,而不是日期)
我设法在d3/nvd3图表中显示日期,我这样做是为了传递毫秒值: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分钟
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?