Как получить последний день предыдущего месяца в Javascript или JQuery

у меня есть следующий код, чтобы получить текущий день:

var month=new Array(12);
month[0]="January";
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";

var d = new Date();
var curr_date;
if (d.getDate() == 1)
{
    curr_date = d.getDate();
}
else
{
    curr_date = d.getDate() - 1;
}

var curr_month = d.getMonth() + 1; //months are zero based
var curr_year = d.getFullYear();
var message_day = curr_year + "_" + curr_month + "_" + curr_date;
var sql_day = month[curr_month - 1].substring(0,3) + curr_date.toString() + curr_year.toString();

if (curr_date == "1")
    {
         document.write(sql_day + " " + message_day);
    }

Это отличная возможность для получения текущего дня, но теперь мне нужно получить последний день последнего месяца, если это начало нового месяца.

сейчас это произвести:

Feb12012 2012_2_1

но мне нужен вывод:

Jan312012 2012_1_31

спасибо

3 ответов


var d=new Date(); // current date
d.setDate(1); // going to 1st of the month
d.setHours(-1); // going to last hour before this date even started.

теперь d содержит последнюю дату предыдущего месяца. d.getMonth() и d.getDate() отразит его.

Это должно работать на любом api даты, который обертывает c time.h. См.этой


это отлично работает для меня:

var date = new Date();
date.setDate(0);

дата теперь содержится последний день предыдущего месяца.


просто вычесть один из дня месяца:

 var today = new Date();
 var yesterday = new Date().setDate(today.getDate() - 1);

Если свойство "дата" (день месяца) равно 1, то установка его на ноль даст вам дату, представляющую последний день предыдущего месяца. Ваш код был уже довольно близок; Вы могли бы просто создать новый экземпляр Date:

 if (d.getDate() === 1)
    curr_date = new Date().setDate(0).getDate();

на самом деле вам даже не нужно заявление "если":

 curr_date = new Date().setDate( d.getDate() - 1 ).getDate();

и это будет работать в любой день месяца.