如何格式化数年和数月的持续时间?

时间:2013-01-16 04:18:34

标签: node.js momentjs

我正在使用带有moment.js的node.js来格式化时间。我想让患者的年龄按月和年来格式化。这是我到目前为止所得到的:

patient: {
    ...
    birthDate: moment('Dec 15, 2009'),
    getAgeString: function() {
        var age = moment.duration(moment() - this.birthDate);
        return util.format('%d years, %d months', age.years(), age.months());
    }
}

getAgeString函数返回3 years, 1 months,这与我想要的非常接近,除非我希望它能够正确复数。据我所知,时刻不能为持续时间提供适当的多元化。

this.birthDate.fromNow(true)是“聪明的”但它似乎没有提供任何显示选项的自定义选项。

我可以让moment.js做我想做的事,还是有更好的节点时间库?


现在必须这样做:

getAgeString: function() {
    var age = moment.duration(moment() - this.birthDate);
    var years = age.years(), months = age.months();
    return util.format('%d year%s, %d month%s', years, years === 1 ? '' : 's', months, months === 1 ? '' : 's');
}

1 个答案:

答案 0 :(得分:1)

您希望复数正确的单词在您自己的代码中显示为字符串文字,而不是基于格式化模块。您可以执行有条件的age.years()或age.months()等于1.如果是,请使用字符串“year”或“month”,否则使用“years”或“months”。