407 Stimmen

Berechnung des letzten Tages des Monats

Wenn Sie 0 als die dayValue en Date.setFullYear erhalten Sie den letzten Tag des Vormonats:

d = new Date(); d.setFullYear(2008, 11, 0); //  Sun Nov 30 2008

Ein Hinweis auf dieses Verhalten findet sich unter mozilla . Ist dies eine zuverlässige browserübergreifende Funktion oder sollte ich mir alternative Methoden ansehen?

1voto

Tofandel Punkte 2230

Hier ist eine Antwort, die die GMT und die Zeit des ursprünglichen Datums beibehält

var date = new Date();

var first_date = new Date(date); //Make a copy of the date we want the first and last days from
first_date.setUTCDate(1); //Set the day as the first of the month

var last_date = new Date(first_date); //Make a copy of the calculated first day
last_date.setUTCMonth(last_date.getUTCMonth() + 1); //Add a month
last_date.setUTCDate(0); //Set the date to 0, this goes to the last day of the previous month

console.log(first_date.toJSON().substring(0, 10), last_date.toJSON().substring(0, 10)); //Log the dates with the format yyyy-mm-dd

1voto

chou Punkte 31
const today = new Date();

let beginDate = new Date();

let endDate = new Date();

// fist date of montg

beginDate = new Date(

  `${today.getFullYear()}-${today.getMonth() + 1}-01 00:00:00`

);

// end date of month 

// set next Month first Date

endDate = new Date(

  `${today.getFullYear()}-${today.getMonth() + 2}-01 :23:59:59`

);

// deducting 1 day

endDate.setDate(0);

0voto

ahmed samra Punkte 33

Setzen Sie den Monat, den Sie für das Datum benötigen, und dann den Tag auf Null, so dass der Monat mit 1 - 31 in der Datumsfunktion beginnt und dann den letzten Tag erhält^^

var last = new Date(new Date(new Date().setMonth(7)).setDate(0)).getDate();
console.log(last);

0voto

Rudi Strydom Punkte 4029

Ich weiß, es ist nur eine Frage der Semantik, aber ich habe es schließlich in dieser Form verwendet.

var lastDay = new Date(new Date(2008, 11+1,1) - 1).getDate();
console.log(lastDay);

Da Funktionen vom inneren Argument aus nach außen aufgelöst werden, funktioniert es genauso.

Sie können dann einfach das Jahr und den Monat / das Jahr durch die gewünschten Angaben ersetzen, unabhängig davon, ob es sich um das aktuelle Datum handelt. Oder einen bestimmten Monat/Jahr.

0voto

Ashish Punkte 7999
function getLastDay(y, m) {
   return 30 + (m <= 7 ? ((m % 2) ? 1 : 0) : (!(m % 2) ? 1 : 0)) - (m == 2) - (m == 2 && y % 4 != 0 || !(y % 100 == 0 && y % 400 == 0)); 
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X