看了一下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结合使用?
为了加表示复数的 ‘s’
@leapon 我书读的少。你不要骗我0.0
@jx-zhou short 没有复数问题,分钟就是m
这里的复数是一种语法表现形式
@leapon 还是不怎么理解,能详细说一下吗。我理解的long和short只是能表示的长度不一致.
@hooboy 复数的语法表现形式?。不懂0.0求指教= =
short 的简洁表达的意思,一天的short 表示为 1d,五天的short 表示为 5d
long 的长格式(复杂)表达的意思,一天的long 表示为 1day,五天的long 表示为 5 days
你看的代码可能是从moment学来的:
Units are case insensitive, and support plural and short forms: year (years, y), month (months, M), date (dates, D), hour (hours, h), minute (minutes, m), second (seconds, s), millisecond (milliseconds, ms).
@leapon 哦。明白了,原来是这个意思。3Q
@leapon 好的。我去看看