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

人类可读的持续时间格式?JavaScript,javascript,Javascript,我有这个函数,可供人阅读 function formatDuration (seconds) { function numberEnding (number) { return (number > 1) ? 's' : ''; } if (seconds > 0){ var years = Math.floor(seconds / 31536000); var days = Math.floor((seconds

我有这个
函数
,可供人阅读

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"}
    }
}
如何将
r
x
y
z
u
放在一起,就像如果有两个以上,最后一个总是用
分隔,其余的用
逗号
分隔一样。结果也是一个
字符串
类型。
示例:
“年”、“日”、“时”、“分”和“秒”
“年”、“日”、“小时”和“分钟”
“年”
“第二”
“分钟”和“秒”
继续下去

我试图将它们放入一个
数组
,以便能够使用
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];
(就我个人而言,我更喜欢牛津逗号[“这个,那个,和另一个“],但你的例子没有使用它,所以这就是你要求的…)

现场示例

test([“this”]);
测试([“这个”,“那个]);
测试([“这个”,“那个”,“另一个]);
功能测试(a){
var str=a.length==1?a[0]:a.slice(0,a.length-1)。连接(“,”+”和“+a[a.length-1];
log(“[”+a.join(“,”+“])=>“+str);
}