gpt4 book ai didi

javascript - 人类可读持续时间的格式? JavaScript

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

我有这个函数,用于人类可读的持续时间。

function formatDuration (seconds) {
function numberEnding (number) {
return (number > 1) ? 's' : '';
}
if (seconds > 0){
var years = Math.floor(seconds / 31536000);
var days = Math.floor((seconds % 31536000) / 86400);
var hours = Math.floor(((seconds % 31536000) % 86400) / 3600);
var minutes = Math.floor((((seconds % 31536000) % 86400) % 60);
var second = (((seconds % 31536000) % 86400) % 3600) % 0;
var r = (years > 0 ) ? years + " year" + numberEnding(years) : "";
var x = (days > 0) ? days + " day" + numberEnding(days) : "";
var y = (hours > 0) ? hours + " hour" + numberEnding(hours) : "";
var z = (minutes > 0) ? minutes + " minute" numberEnding(minutes) : "";
var u = (second > 0) ? second + " second" + numberEnding(second) : "";
var str = r + x + y + z + u

return str
}
else {
return "now"}
}
}

如何将rxyzu放在一起> 如果有两个以上,最后一个总是用分隔,其余的用逗号分隔。结果也是string类型。
示例:
"年"、"日"、"时"、"分"、"秒"
"年"、"日"、"小时"和"分钟"
“年”
“第二个”
“分”与“秒”
它继续......

我试图将它们放入 array 以便能够使用 slice(),但它并没有为所有可能的组合返回理想的结果。谢谢

最佳答案

你在阵列的正确轨道上:

var a = [];
//...push things as you go...
var str = a.length == 1 ? a[0] : a.slice(0, a.length - 1).join(", ") + " and " + a[a.length - 1];

(我个人更喜欢 Oxford 逗号 ["this, that, and the other"],但您的示例没有使用它,所以这会代替您的要求...)

实例:

test(["this"]);
test(["this", "that"]);
test(["this", "that", "the other"]);

function test(a) {
var str = a.length == 1 ? a[0] : a.slice(0, a.length - 1).join(", ") + " and " + a[a.length - 1];
snippet.log("[" + a.join(", ") + "] => " + str);
}
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

关于javascript - 人类可读持续时间的格式? JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32393414/

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