var d = new Date();
d.setMonth(d.getMonth() - 3);
Dies funktioniert für Januar. Führen Sie dieses Snippet aus:
var d = new Date("January 14, 2012");
console.log(d.toLocaleDateString());
d.setMonth(d.getMonth() - 3);
console.log(d.toLocaleDateString());
Es gibt einige Einschränkungen ...
Ein Monat ist eine merkwürdige Sache. Wie definieren Sie 1 Monat? 30 Tage? Die meisten Leute werden sagen, dass vor einem Monat derselbe Tag des Monats bedeutet, an dem das Zitat des Vormonats benötigt wird . Aber mehr als die Hälfte der Zeit, also vor 31 Tagen, nicht vor 30. Und wenn heute der 31. des Monats ist (und es nicht August oder Dezember ist), existiert dieser Tag des Monats im Vormonat nicht.
Interessanterweise stimmt Google JavaScript zu, wenn Sie fragen, welcher Tag einen Monat vor einem anderen Tag liegt :
Es heißt auch, dass ein Monat 30.4167 Tage lang ist :
Ist also ein Monat vor dem 31. März der gleiche Tag wie ein Monat vor dem 28. März, 3 Tage früher? Dies hängt alles davon ab, was Sie unter "einen Monat vorher" verstehen. Sprechen Sie mit Ihrem Produktbesitzer.
Wenn Sie wie momentjs vorgehen und diese Fehler am letzten Tag des Monats korrigieren möchten, indem Sie zum letzten Tag des Monats wechseln, können Sie Folgendes tun:
const d = new Date("March 31, 2019");
console.log(d.toLocaleDateString());
const month = d.getMonth();
d.setMonth(d.getMonth() - 1);
while (d.getMonth() === month) {
d.setDate(d.getDate() - 1);
}
console.log(d.toLocaleDateString());
Wenn Ihre Anforderungen komplizierter sind, verwenden Sie etwas Mathematik und schreiben Sie Code. Du bist ein Entwickler! Sie müssen keine Bibliothek installieren! Sie müssen nicht aus dem Stackoverflow kopieren und einfügen! Sie können den Code selbst entwickeln, um genau das zu tun, was Sie brauchen!