Ich musste vor kurzem etwas Ähnliches machen, und das ist das, was ich herausgefunden habe:
/**
* Returns a date set to the begining of the month
*
* @param {Date} myDate
* @returns {Date}
*/
function beginningOfMonth(myDate){
let date = new Date(myDate);
date.setDate(1)
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
return date;
}
/**
* Returns a date set to the end of the month
*
* @param {Date} myDate
* @returns {Date}
*/
function endOfMonth(myDate){
let date = new Date(myDate);
date.setDate(1); // Avoids edge cases on the 31st day of some months
date.setMonth(date.getMonth() +1);
date.setDate(0);
date.setHours(23);
date.setMinutes(59);
date.setSeconds(59);
return date;
}
Geben Sie ein Datum ein, und es wird ein Datum zurückgegeben, das entweder auf den Monatsanfang oder auf das Monatsende eingestellt ist.
En begninngOfMonth
Funktion ist ziemlich selbsterklärend, aber was in die endOfMonth
Funktion ist, dass ich den Monat auf den nächsten Monat hochzähle und dann mit setDate(0)
um den Tag auf den letzten Tag des Vormonats zurückzudrehen, was ein Teil der setDate-Spezifikation ist:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate https://www.w3schools.com/jsref/jsref_setdate.asp
Ich setze dann die Stunde/Minuten/Sekunden auf das Ende des Tages, so dass, wenn Sie eine Art von API verwenden, die einen Datumsbereich erwartet, Sie in der Lage sind, die Gesamtheit des letzten Tages zu erfassen. Dieser Teil könnte über das hinausgehen, was der ursprüngliche Beitrag fragt nach, aber es könnte jemand anderes auf der Suche nach einer ähnlichen Lösung helfen.
Bearbeiten: Sie können auch einen Schritt weiter gehen und die Millisekunden mit setMilliseconds()
wenn Sie besonders genau sein wollen.