簡體   English   中英

Moment.js兩個日期之間的持續時間

[英]Moment.js Duration between Two Dates

如何使用moment.js獲取兩個不同日期變量之間的時差,特別是年,月和日?

我找到了這種方法,但結果一直很奇怪。 有時結果要提前一個月,所以我添加了一個減法一個月的部分以使結果正確,但是當兩個日期之間的差額可以被整整為整數時,它將變成滯后一個月,但是如果我減去減法月部分,它變得更加瘋狂。

另外,我想將其格式化為“ X年,Y月,Z天”,但也無法弄清楚如何以這種方式格式化。

 var dateOne = new Date(2000,07,16); var dateTwo = new Date (1990,07,16); var updatedDate = moment(dateOne).format('ll'); var x = moment(dateOne, 'DD/MM/YYYY').diff(moment(dateTwo, 'DD/MM/YYYY')) var y = moment.duration(x); var why = moment(x).subtract(1, 'M'); var z = Math.floor(y.asYears()) + moment.utc(why).format('/MM/DD'); console.log(z); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script> 

試試這個吧?

var firstDate = moment();
var secondDate = moment("2018-03-19");
var yearDiff = firstDate.diff(secondDate, "year");
var monthDiff = firstDate.diff(secondDate, "month");
var dayDiff = firstDate.diff(secondDate, "day");
console.log(yearDiff + " Years, " + monthDiff + " Months, " + dayDiff + " Days");

https://jsfiddle.net/px1brLdk/

如評論中其他人所述,您不能將持續時間格式化為日期,並且由於dateOnedateTwo是Date對象,因此無需在moment(dateOne, 'DD/MM/YYYY')使用第二個參數,只需使用moment(Date)

移動器,請注意,當您使用new Date(year, monthIndex, day) monthIndex從0開始時,請參閱MDN文檔

參數monthIndex基於0。 這意味着January = 0December = 11

您可以根據需要使用moment-duration-format插件格式化moment.js持續時間,請參閱插件頁面上的format()文檔。

這是一個現場樣本:

 var dateOne = new Date(2000, 7, 16); var dateTwo = new Date(1990, 7, 16); var diff = moment(dateOne).diff(moment(dateTwo)) var dur = moment.duration(diff); var result = dur.format(); console.log(result); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/2.2.2/moment-duration-format.min.js"></script> 

瞬間有一種叫做.diff()的方法。 https://momentjs.com/docs/#/displaying/difference/

暫無
暫無

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

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