2019-12-20
描述
根据给定的毫秒数,返回人类可读的格式。
提示
- 用
ms
除以适当的值,以得到适当的day
,hour
,minute
,second
和millisecond
值 - 使用
Object.entries()
和Array.prototype.filter()
过滤出非零值* 使用Array.prototype.map()
为每一个值创建一个字符串,并为复数添加s
- 使用
String.prototype.join(', ')
将值合并为一个字符串
代码
const formatDuration = ms => {
if (ms < 0) ms = -ms;
const time = {
day: Math.floor(ms / 86400000),
hour: Math.floor(ms / 3600000) % 24,
minute: Math.floor(ms / 60000) % 60,
second: Math.floor(ms / 1000) % 60,
millisecond: Math.floor(ms) % 1000
};
return Object.entries(time)
.filter(val => val[1] !== 0)
.map(([key, val]) => `${val} ${key}${val !== 1 ? 's' : ''}`)
.join(', ');
};
示例
对给定的毫秒进行格式化:
formatDuration(1001); // '1 second, 1 millisecond'
formatDuration(34325055574); // '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds'