簡體   English   中英

Moment.js如何使用fromNow()在幾小時內返回所有內容?

[英]Moment.js how to use fromNow() to return everything in hours?

我正在搜索moment.js文檔stackoverflow,以獲得一種使用fromNow()函數但在幾小時內返回所有內容的方法。

我的意思是:

moment([2017, 01, 05]).fromNow();     // a day ago

應該

moment([2017, 01, 05]).fromNow();     // 24 hours ago

我知道可以使用.diff和其他類似函數然后添加文本來執行此操作,但是可以使用.fromNow()來執行此操作嗎?

您可以使用relativeTimeThreshold自定義時刻相對時間的閾值。

正如文檔所說:

duration.humanize具有閾值,用於定義何時將單位視為分鍾,一小時等。 例如,默認情況下,超過45秒被視為一分鍾,超過22小時被視為一天,依此類推。 要更改這些截止值,請使用moment.relativeTimeThreshold(unit, limit) ,其中unit是smhdM

在您的情況下,您可以增加小時閾值以將相對天數作為小時。 這是一個工作示例,顯示從1小時到26天的小時數:

 var m1 = moment().subtract(5, 'h'); var m2 = moment().subtract(55, 'h'); var m3 = moment().subtract(1, 'd'); // Default results console.log(m1.fromNow()); console.log(m2.fromNow()); console.log(m3.fromNow()); // Change relativeTimeThreshold moment.relativeTimeThreshold('m', 60); moment.relativeTimeThreshold('h', 24*26); // Results in hours console.log(m1.fromNow()); console.log(m2.fromNow()); console.log(m3.fromNow()); 
 <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script> 

請注意,如果需要,moment允許您使用relativeTime這里是我的一個示例)和relativeTimeRounding方法進一步自定義相對時間。

如果你肯定想使用fromNow() ,除了重寫moment的內置函數之外我什么都看不到。 例如,您可以覆蓋它以返回小時數差異,如下所示:

moment.fn.fromNow = function (a) {
    var duration = moment().diff(this, 'hours');
    return duration;
}

然后你可以檢查fromNow()以小時為單位返回值:

console.log(moment([2017,0,6]).fromNow());  

返回:

19

注意:嘗試在19:00 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM