2

我正在使用带有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函数给了我 back 3 years, 1 months,这非常接近我想要的,除了我希望它被正确地复数。据我所知,moment 并没有为持续时间提供适当的复数形式。

this.birthDate.fromNow(true)是“智能的”,但它似乎没有提供任何关于显示内容的自定义选项。

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


现在必须这样做:

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');
}
4

1 回答 1

1

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

于 2013-01-16T04:25:16.357 回答