2016-10-08 5 views
0

UNIXのタイムスタンプに基づいて最小限の時間セグメントを表示しようとしています。日付は50秒、1分、2時間、3dなどの最小の相対的な時間セグメントしか表示されません。

例: "50秒前"

  1. は50歳代である必要があります。
  2. "65秒前"は、60秒以上が分であるため、1分である必要があります。
  3. 「60分前」は、60分以上が分単位であるため、1時間にする必要があります。
  4. 「25時間前」=> 1d。
  5. "8 days ago" => 1w。
  6. ... 1mon(月間)。
  7. ... 2y(年間)。

私はmomentすなわち

moment.unix(1440187622).fromNow() 

のようないくつかのライブラリを試してみましたが、それは私がしたい正確に何がそのない、「文」を返します。

アイデア?

+0

http://stackoverflow.com/questions/3177836/how-to-format-time-since-xxx-eg-4-minutes-ago-similar-to-:あなたはこのような関数を書くことができstack-exchange-site – adeneo

+0

誰もが "フレンドリー"なフォーマットを好んでいるわけではありません。 「昨日」の4つの項目を見ても、それらがお互いに発生した時期を判断するのに役立ちません。 :-) – RobG

+0

約12行のコードで自分でやることができます。試しましたか? – jcaron

答えて

0

moment.js durationsを見ましたか?

function segment(duration) { 
    return duration.years() > 0 ? duration.years() + 'y' : 
    duration.months() > 0 ? duration.months() + 'mon' : 
    // ... 
    duration.seconds() > 0 ? duration.seconds() + 's' : ''; 
} 
segment(moment.duration(moment.diff(moment(),moment.unix(1440187622)))) 
関連する問題