2

時間のフォーマットにnode.jsとmoment.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。これは、適切に複数形にしたいと思うことを除けば、私が望むものにかなり近いものです。私が知る限り、momentは期間に対して適切な複数形を提供しません。

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

1 に答える 1

1

適切に複数形にしようとしている単語は、独自のコードでは文字列リテラルのように見え、書式設定モジュールに基づいていません。age.years() または age.months() が 1 に等しい条件を実行できます。そうである場合は、文字列「年」または「月」を使用し、それ以外の場合は「年」または「月」を使用します。

于 2013-01-16T04:25:16.357 に答える