2016-05-01 96 views
0

我有一個領域對象「創建」,在其中創建對象的日期。現在我想跟蹤‘多少個小時前’對象是使用moment.js創建。如何使用moment.js獲得24小時內的日期之間的小時差?

我的目標是有時間顯示如下面的例子

Created: 1hr ago 

Created: 5hrs ago 

Created: 9hrs ago 

Created: 12hrs ago 

Created: 14hrs ago 

Created: 18hrs ago 

Created: 24hrs ago 

一天24小時內一路

所以我試圖與時刻:。

var $created = "2016-05-01T09:58:26.796Z"; 
    var $now = new Date(); 

    var $lastCreatedHour = moment(moment(moment().format('H')).diff(moment($created).format('H'))).format('H') + " hrs ago"; 

console.log("Created: " + $lastCreatedHour); 

我在這裏的邏輯很簡單,只是試圖讓當今時代小時和$創建小時之間的差異。

我實際上嘗試了許多不同的東西,他們都不工作,要麼他們是一個數字關閉,或他們不會在24小時內工作,只有在12小時內。

JSFIDDLE

我不和日期的幫助最好的感謝!

謝謝。

回答

1

如果你正在尋找任何時候都在個小時,然後從stdob--答案是罰款。

值得注意的是,瞬間內置了.fromNow()。簡單地採取日期字符串爲您建立項目時,傳遞的那一刻構造函數,調用該函數:

moment($created).fromNow(); 

作爲一個實際的例子:

moment("2016-05-01T09:58:26.796Z").fromNow() 
"2 hours ago" 

,或者更長的時間前:

moment("2016-04-28T09:58:26.796Z").fromNow() 
"3 days ago" 

該功能將提供更多的用戶友好輸出,從'幾秒前'到'x分鐘前'到'y小時前',並進入數天,數月和數年。

fromNow的輸出文本可以自定義。有關定製說明,請參閱http://momentjs.com/docs/#/displaying/fromnow/的基本文檔和http://momentjs.com/docs/#/customization/relative-time/

作爲最終的最佳實踐注意事項,除非您有需要日期的第三方API,否則不應使用帶有Moment.js的JavaScript Date對象。對於你正在做的事情,不需要日期。

+0

Wow Maggie這真棒,爲我提供了一個更好的解決方案。我認爲即使它不只是'小時',我也會實際回答你的答案。非常感謝Maggie分享這些信息 –

0

如果你不需要檢查日期,這可能是你的問題的答案。另外,我想說,你的函數鏈不是必須的(如我已經說過的),這是你想要實現的。

我的結果是這樣的:

var $created = moment("2016-04-30T00:58:26.796Z"); 
var $now = moment(); 
var $lastFeedHour = moment($now.diff($created)).hour(); 

console.log("Created: " + $lastFeedHour + " hrs ago"); 

你也可以檢查一下生活here

+0

這不適合我的情況。感謝分享! –

0
var $created = "2016-04-30T10:58:26.796Z"; 
var $now = "2016-05-01T10:58:26.696Z"; 
var $lastFeedHour = moment(moment().diff(moment($created))).format('H'); 

console.log("Created: " + $lastFeedHour + " hrs ago"); 

JS Fiddle

+0

如果時間超過12小時,此解決方案不起作用,給出錯誤的小時。感謝你的分享! –

2
var $lastFeedHour = $now.diff($created, 'hours', true) + " hrs ago"; 

[https://jsfiddle.net/bjdtkfLs/]

[http://momentjs.com/docs/#/displaying/difference/]

+0

嘿,非常感謝你的幫助,這個解決方案效果很好,除了第三個參數需要是錯誤的。無論如何,只有我帶着Maggies回答的原因是因爲它在所有使用moment.js的情況下都是一個更好的解決方案。但就像我說你的解決方案爲'小時'工作。謝謝你的分享,真的很感激! –

相關問題