看了一下ms模块的源码发现有一段不是很理解,求指点
var s = 1000;
var m = s * 60;
var h = m * 60;
var d = h * 24;
var y = d * 365.25;
function short(ms) {
if (ms >= d) return Math.round(ms / d) + 'd';
if (ms >= h) return Math.round(ms / h) + 'h';
if (ms >= m) return Math.round(ms / m) + 'm';
if (ms >= s) return Math.round(ms / s) + 's';
return ms + 'ms';
}
/**
* Long format for `ms`.
*
* @param {Number} ms
* @return {String}
* @api private
*/
function long(ms) {
return plural(ms, d, 'day')
|| plural(ms, h, 'hour')
|| plural(ms, m, 'minute')
|| plural(ms, s, 'second')
|| ms + ' ms';
}
/**
* Pluralization helper.
*/
function plural(ms, n, name) {
if (ms < n) return;
if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;
return Math.ceil(ms / n) + ' ' + name + 's';
}
这是部分源码,用于将long和short类型的时间的转换方法 为什么short直接了当的用了round四舍五入 而long写的这么麻烦,plural辅助方法,不就是用于四舍五入吗,为什么不直接用round,而是采用floor和ceil结合使用?
10 回复
short 的简洁表达的意思,一天的short 表示为 1d,五天的short 表示为 5d
long 的长格式(复杂)表达的意思,一天的long 表示为 1day,五天的long 表示为 5 days