2017-11-02 4 views
1

説明再現するために反対の値に対して同じ出力を返すヒト化:私は瞬間ライブラリの最新(2.19.1)バージョンを使用していますMomentjs diffをし、問題や階段の

。私は入力の日付(今日は午後5時と言いましょう)を持っていて、それを現在の時刻から減算してからそれを人間化します。

moment.duration(moment({hour:17}).diff(moment({hour:16, minute:45}))).humanize() //output: 15 minutes 
moment.duration(moment({hour:17}).diff(moment({hour:17, minute:15}))).humanize() //output: 15 minutes 

上記の2行目の場合、出力は1行目と区別されます。これは正反対です。

ヒューマナイズの結果に基づいて、「15分残っている」のようなメッセージをUIに表示しています。しかし反対の値のために同じ出力があるので私は適切なメッセージを表示することができません。

私はMomentjsチームgithubでこの問題を提起しましたが、誰かがここでstackoverflowを手伝うことができるかどうか疑問に思っています。

答えて

1

あなたはデフォルトでhumanize(true)

を使用することができ、戻り値の文字列がsuffixlessです。接尾辞が必要な場合は、以下のように真を渡します。ここで

ライブのサンプル:

console.log(moment.duration(moment({hour:17}).diff(moment({hour:16, minute:45}))).humanize(true)); //output: in 15 minutes 
 
console.log(moment.duration(moment({hour:17}).diff(moment({hour:17, minute:15}))).humanize(true)); //output: 15 minutes ago
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>

あなたが必要な場合は、モーメントがupdateLocaleを使用してRelative Timeを表示する方法をカスタマイズすることができます。

moment.updateLocale('en', { 
 
    relativeTime : { 
 
     future: "in %s", 
 
     past: "%s remaining" 
 
    } 
 
}); 
 

 
console.log(moment.duration(moment({hour:17}).diff(moment({hour:16, minute:45}))).humanize(true)); //output: in 15 minutes 
 
console.log(moment.duration(moment({hour:17}).diff(moment({hour:17, minute:15}))).humanize(true)); //output: 15 minutes ago
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>