[英]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是s
,m
,h
,d
,M
。
在您的情況下,您可以增加小時閾值以將相對天數作為小時。 這是一個工作示例,顯示從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.