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.
