我有一个用于文件上传的“剩余时间”计数器。计算剩余持续时间并将其转换为毫秒,如下所示:
var elapsedTime = e.timeStamp - timestarted;
var speed = e.loaded / elapsedTime;
var estimatedTotalTime = e.totalSize / speed;
var timeLeftInSeconds = (estimatedTotalTime - elapsedTime) / 1000;
然后我构建了一个数组,我打算将其构建为人性化的字符串。数组如下:
var time = {
years : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').years()),
months : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').months()),
days : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').days()),
hours : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').hours()),
minutes : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').minutes()),
seconds : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').seconds())
};
这一切都很完美,如果我像这样输出这个数据的字符串表示:
console.log(time.years + ' years, ' + time.months + ' months, ' + time.days + ' days, ' + time.hours + ' hours, '+ time.minutes + ' minutes, ' + time.seconds + ' seconds');
我它返回一个很好的简单剩余时间流,如下所示:
0 years, 0 months, 0 days, 0 hours, 1 minutes, 7 seconds
我现在需要做的是人性化这个输出,以便根据剩余时间构建字符串。例如
- 还剩2年3个月
- 还剩 1 小时 32 分 41 秒
- 还剩 7 秒
- 还剩 3 分 46 秒
- 还剩 6 秒
等等……等等……
现在我知道 moment.js 具有自动人性化持续时间的能力,这对单个值很好,但这可以有多个可能的值(小时/分钟/秒等)
如何使用 moment.js 或手动构建字符串来人性化这些数据?
提前致谢。