Gre*_*tit 3 javascript momentjs i18next
让我先说我有一个“有效”的解决方案,部分来自上一个线程:
我的目标是使用本地化/国际化技术将持续时间(以毫秒为单位)转换为人类可读的。输入值以毫秒为单位并且是一个移动目标,因为它是 ETA(估计到达时间)而不是确定的到达时间。它不断地重新计算。
我想出的作品。我正在寻找的是可以利用momentjs 的东西(因为它已经有一个本地化系统)。它不必特别是momentjs,但我想要一些更优雅的选择,尤其是在本地化方面。我也使用并因此可以访问i18next提供的任何内容。
这是当前解决方案的简化版本(它位于实用程序函数的对象字面量中):
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 sRun Code Online (Sandbox Code Playgroud)
在这种情况下,我采用与原始线程类似的方法,但我返回一个可用对象,而不是自动转换为字符串。在我的实际代码中,我通过了一些其他条件,以及一些将返回未本地化值的选项。但是在这里我们看到我将对象与i18next提供的一些语言条目连接起来。这就是本地化发生的地方。
然而在我看来,持续时间对他们来说不仅仅是交换测量单位。
使用momentjs似乎有点矫枉过正,但尽管如此,我还是看不到任何持续时间函数。所有与日期相关的函数。
由于我觉得我的解决方案不是很灵活并且本地化有点二等,有人知道更好的方法吗?
有可能以人类可读的方式使用 moment.js 以毫秒为单位显示持续时间:
moment.duration(416000).humanize();
Run Code Online (Sandbox Code Playgroud)
上面的代码返回:7 minutes。这是你需要的吗?
当然,您可以使用 moment.js 中的 i18n。你只需要打电话:
moment.locale('es');
moment.duration(416000).humanize();
Run Code Online (Sandbox Code Playgroud)
获得西班牙语本地化的持续时间 ( 7 minutos)。
如果您需要更详细的结果 ( 6 minutes 56 seconds),请查看此库:https : //github.com/EvanHahn/HumanizeDuration.js
| 归档时间: |
|
| 查看次数: |
2033 次 |
| 最近记录: |