Zamień liczbę pozostałych dni na lata, miesiące, dni [duplikat]
Próbuję uzyskać różnicę między dwiema datami (moje urodziny i bieżąca data, aby uzyskać czas pozostały do moich urodzin), ale chcę, aby format wyjściowy był w ('Rok / Miesiące / Dni); Jak mogę to zrobić? tego próbowałem do tej pory:
const birthday = new Date ('11-20-2021').getTime();
const today = new Date ().getTime();
const dys = (1000*60*60*24);
const months = (dys*30);
let differance = birthday-today ;
const formatted = Math.round(differance/dys);
console.log(formatted);`
z góry dziękuję
Odpowiedzi
Co sądzisz o operatorze modulo? :)
Jest to typowa operacja matematyczna, taka jak znajdowanie zmian itp. Pomyśl o tym w ten sposób, jeśli masz dużą liczbę dni, powiedzmy 397, możesz uzyskać liczbę lat, wykonując dzielenie liczb całkowitych (1), a następnie możesz uzyskać liczbę dni pozostałych, wykonując modulo o rok, aby uzyskać reszta (w dniach) 397% 365 = 32. Następnie możesz powtórzyć proces, aby uzyskać liczbę pozostałych miesięcy (1 ... zakładając 30-dniowy miesiąc) w tym i ponownie, modulo, aby uzyskać końcową liczbę dni 2 ...
Nie jestem javascript pro, ale myślę, że musisz użyć Math.floor (iloraz), aby uzyskać wynik dzielenia w formacie całkowitoliczbowym.
ten przykład porównuje aktualną datę z datą 2100/0/14. Wypróbuj tę samą koncepcję w przykładzie i mam nadzieję, że pomoże:
var today, someday, text;
today = new Date();
someday = new Date();
someday.setFullYear(2100, 0, 14);
if (someday > today) {
text = "Today is before January 14, 2100.";
} else {
text = "Today is after January 14, 2100.";
}
document.getElementById("demo").innerHTML = text;
Praca z datami i różnicami może być trudna, ponieważ istnieje wiele przypadków skrajnych. dlatego wolę, aby zajmowała się tym dedykowana biblioteka, na przykładhttps://momentjs.com/
moment ma wtyczkę (https://www.npmjs.com/package/moment-precise-range-plugin), który robi dokładnie to, czego szukasz:
import moment from 'moment';
import 'moment-precise-range-plugin';
var m1 = moment('2014-01-01 12:00:00','YYYY-MM-DD HH:mm:ss');
var m2 = moment('2014-02-03 15:04:05','YYYY-MM-DD HH:mm:ss');
var diff = moment.preciseDiff(m1, m2, true); // {years : 0, months : 1, days : 2, hours : 3, minutes : 4, seconds : 5}
var str = `Years: ${diff.years}, Months: ${diff.months}, Days: ${diff.days} `; // 'Years: 0, Months: 1, Days: 2'