Anzahl verbleibender Tage in Jahre, Monate, Tage umwandeln [Duplikat]
Ich versuche, die Differenz zwischen zwei Daten (meinem Geburtstag und dem aktuellen Datum, um die verbleibende Zeit bis zu meinem Geburtstag zu ermitteln) zu ermitteln. Ich möchte jedoch das Ausgabeformat in ('Jahr / Monate / Tage). Wie kann ich das machen? das habe ich bisher versucht:
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);`
Vielen Dank im Voraus
Antworten
Wie denkst du über den Modulo-Operator? :) :)
Dies ist eine übliche mathematische Operation, wie das Finden von Änderungen oder dergleichen. Stellen Sie sich das so vor: Wenn Sie eine große Anzahl von Tagen haben, z. B. 397, können Sie die Anzahl der Jahre durch Ganzzahldivision (1) ermitteln. Dann können Sie die Anzahl der verbleibenden Tage ermitteln, indem Sie Modulo pro Jahr ausführen, um die zu erhalten Rest (in Tagen) 397% 365 = 32. Dann können Sie den Vorgang wiederholen, um die Anzahl der verbleibenden Monate (1 ... unter der Annahme eines 30-Tage-Monats) zu erhalten, und erneut modulo, um die endgültige Anzahl der Tage 2 ... zu erhalten.
Ich bin kein Javascript-Profi, aber ich denke, Sie müssen Math.floor (Quotient) verwenden, um das Ergebnis der Division im Ganzzahlformat zu erhalten.
Dieses Beispiel vergleicht zwischen dem aktuellen Datum und dem Datum 2100/0/14. Versuchen Sie dasselbe Konzept im Beispiel und ich hoffe, es hilft:
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;
Das Arbeiten mit Daten und Unterschieden kann schwierig sein, da es viele Randfälle gibt. Aus diesem Grund lasse ich lieber eine dedizierte Bibliothek damit umgehenhttps://momentjs.com/
Moment hat ein Plugin (https://www.npmjs.com/package/moment-precise-range-plugin) die genau das macht, wonach Sie suchen:
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'