gpt4 book ai didi

javascript - 我怎样才能在 moment.js/javascript 中人性化这个完整的持续时间

转载 作者:可可西里 更新时间:2023-11-01 02:54:10 28 4
gpt4 key购买 nike

我有一个用于文件上传的“剩余时间”计数器。计算剩余持续时间并将其转换为毫秒,如下所示:

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 或手动构建字符串来人性化这些数据?

提前致谢。

最佳答案

我的 HumanizeDuration.js图书馆听起来正是你想要的:

humanizeDuration(1);         // "1 millisecond"
humanizeDuration(3000); // "3 seconds"
humanizeDuration(2012); // "2 seconds, 12 milliseconds"
humanizeDuration(97320000); // "1 day, 3 hours, 2 minutes"

看来我的回答有点晚了,但也许它会帮助其他人看这个问题!

关于javascript - 我怎样才能在 moment.js/javascript 中人性化这个完整的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14157341/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com