我正在编写一个需要条形图的应用程序,其在x轴中的分箱与所显示事件之间的平均时间距离的数量级相关。
例如,我想要显示的事件的平均时间距离可能是 73 秒。这意味着 bin 相对于显示的条的大小应该是一分钟。
输入间隔的持续时间(以秒为单位)和推断的数量级的其他示例是:
- 3秒:一秒
- 327 秒:一分钟(或者可能是 5 分钟)
- 5298 秒:一小时
- 7625 秒:(可能)两个小时
- 10234 秒:一天
- 4023860 秒:一个月
等等。我试图查看 moment.js图书馆和我发现他们实现了一些非常有趣的东西:fromNow
method .
请注意,我还对先前说明的每个数量级的秒数感兴趣。
我知道我可以通过一系列测试(带休息的除法)自己实现它,但我想重新发明(可能有缺陷的)轮子。
最佳答案
最后,我通过以下简单函数实现了一个解决方案:
function compute_magnitude_interval(average_interval) {
var minute = 60;
var hour = minute*60;
var day = hour*24;
var possible_intervals = [
1, 2, 5, 10, 20, 30,
minute, minute*2, minute*5, minute*10, minute*20, minute*30,
hour, hour*2, hour*5, hour*10, hour*12,
day, day*2, day*5, day*10, day*15
].reverse();
for(var i in possible_intervals){
var seconds = possible_intervals[i];
if (Math.floor(average_interval/seconds) > 0) {
return seconds;
}
};
}
关于javascript:获取时间间隔的数量级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23807336/