これが私の目標です。特定の日付がかなり読みやすい文字列としてどれくらい前にあったかを取得したいと思います。「4日前と3時間前」のようなもの。私はdatejsを使用しており、現在両方の日付をエポックとして使用しています。
あるエポックを他のエポックから減算し、その差を取り、出力する文字列を手動で計算できることはわかっています。しかし、これはdatejsが処理するもののように感じます。ただし、日付オブジェクトまたはエポックを時間の量に変換する手段を表現している(そのことに関するjs libの)ドキュメントはありません。
これをどのように処理するのが最善かについてのアイデアはありますか?
アップデート
もっとはっきりさせておきます。私が人間が読めると言うとき、それは意味します
- 1日前は「昨日」です
- 2日前は「2日前」です
- 30秒前は「今」です
- 1年3日12秒前は「1年前」です
私がやったこと
prettyAgo = (ago) ->
ago = ago.getTime() if typeof ago is 'object'
diff = ((new Date()).getTime() - ago) / 1000
dayDiff = Math.floor(diff / 86400)
return false if isNaN(dayDiff) or dayDiff < 0
writer = ''
if dayDiff is 0
if diff < 1 then writer = 'just now'
else if diff < 60 then writer = Math.floor(diff)+' seconds ago'
else if diff < 120 then writer = '1 minute ago'
else if diff < 3600 then writer = Math.floor(diff / 60)+' minutes ago'
else if diff < 7200 then writer = '1 hour ago'
else if diff < 86400 then writer = Math.floor(diff / 3600)+' hours ago'
else if dayDiff is 1 then writer = 'yesterday'
else if dayDiff < 7 then writer = dayDiff+' days ago'
else if dayDiff is 7 then writer = '1 week ago'
else if dayDiff < 31 then writer = Math.ceil( dayDiff / 7 )+' weeks ago'
else writer = new Date(ago).toString 'MMM yyyy'
return writer