javascript - Cum să găsești durata exactă între două date Unix (în zile) folosind MomentJS?


Încerc să găsesc diferența dintre 2 date, folosind biblioteca MomentJS. Totuși, cerința este să folosesc timestamp-uri Unix ca valori pentru date.

În prezent am următorul cod, care returnează o valoare inexactă:

var start = 1536873321; // 13 September 2018
var end = 1537228800 ; // 18 September 2018

var diff = moment.unix(end).diff(moment.unix(start), 'days');
console.log(diff); //4 (expected 5, or 6 if last day is included)

Există vreo soluție pentru asta, sau utilizarea JavaScript simplu este mai recomandată pentru a obține un rezultat mai precis?

Vă rugăm să consultați demo-ul dacă este necesar.

Răspuns #1

Moment se întoarce 4 zile pentru că nu sunt chiar 5 zile între acele două marcaje de timp.

start = 1536873321; // 13 September 2018 (9:15pm)
end = 1537228800 ; // 18 September 2018 (12:00am)

Deci timpul exact în zile dintre ele este de 4,114340277777778 zile.

Încearcă

start = moment.unix(1536873321);
end = moment.unix(1537228800 );
var diff = Math.ceil(moment.duration(start.diff(end)).asDays());

Răspunsul #2

Nu trebuie să folosești timpii Unix. Încearcă asta:

var start  = moment("20180913", "YYYYMMDD");
var end = moment("20180918", "YYYYMMDD");

var diff = end.diff(start, "days");
console.log(diff);

Asta face ca sintaxa să fie puțin mai curată și.