gpt4 book ai didi

javascript - 从毫秒本地化 "duration"或 "time remaining"

转载 作者:行者123 更新时间:2023-11-29 18:03:12 26 4
gpt4 key购买 nike

首先让我说我有一个“有效”的解决方案,部分来自之前的线程:

How to convert time milliseconds to hours, min, sec format in JavaScript?

我的目标是使用本地化/国际化技术将持续时间(以毫秒为单位)转换为人类可读的形式。输入值以毫秒为单位,并且是移动目标,因为它是 ETA(预计到达时间)而不是确定的到达时间。它会不断重新计算。

我的想法是有效的。我正在寻找的是可以利用 的东西(因为它已经有了本地化系统)。它不一定是 特别是,但我想要一些具有更优雅选项的东西,尤其是在本地化方面。我也使用并因此可以访问 提供的任何内容.

这是当前解决方案的简化版本(它在实用函数的对象字面量中):

function duration (millis) {
// in actual code, a function "i18n.t(key)" would return a properly
// localized string. Instead, I'll just store English strings in an object
var mockTranslation = {
hoursLabel: "hr",
minutesLabel: "min",
secondsLabel: "s"
}

millis = parseInt(millis);

function msToTime(duration) {
var milliseconds = parseInt((duration%1000)/100)
, seconds = parseInt((duration/1000)%60)
, minutes = parseInt((duration/(1000*60))%60)
, hours = parseInt((duration/(1000*60*60))%24);

hours = (hours < 10) ? "0" + hours : hours;
minutes = (minutes < 10) ? "0" + minutes : minutes;
seconds = (seconds < 10) ? "0" + seconds : seconds;

return {
hours : hours,
minutes: minutes,
seconds: seconds,
milliseconds: milliseconds
}
}
var converted = msToTime(millis);
var final = "" + converted.hours + " " + mockTranslation.hoursLabel
+ " " + converted.minutes + " " + mockTranslation.minutesLabel
+ " " + converted.seconds + " " + mockTranslation.secondsLabel;
return final;
}

// test with a sample input of 416000 ms.
console.log(duration(416000)); // 00 hr 06 min 56 s

在这种情况下,我采用了与原始线程类似的方法,但我返回了一个可用的对象,而不是自动转换为字符串。在我的真实代码中,我有一些其他的条件,我通过了一些选项,这些选项将返回一个未本地化的值。但是在这里我们看到我获取对象并将其与 提供的一些语言条目连接起来。 .这就是本地化发生的地方。

但在我看来,持续时间对他们来说比交换测量单位更重要。

使用 似乎有点矫枉过正,但尽管如此,我还是看不到任何持续时间函数。所有与日期相关的函数。

因为我觉得我的解决方案不是很灵活,而且本地化有点二流,有人知道更好的方法吗?

最佳答案

可以使用 moment.js 以人类可读的方式显示以毫秒为单位的持续时间:

moment.duration(416000).humanize();

以上代码返回:7 分钟。是您需要的吗?

当然你可以使用 moment.js 中的 i18n。你只需要调用:

moment.locale('es');
moment.duration(416000).humanize();

获取西类牙语本地化的持续时间(7 分钟)。

如果您需要更详细的结果(6 分 56 秒),请查看此库:https://github.com/EvanHahn/HumanizeDuration.js

关于javascript - 从毫秒本地化 "duration"或 "time remaining",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33488430/

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