Как получить последний день предыдущего месяца в Javascript или JQuery - PullRequest
8 голосов
/ 01 февраля 2012

У меня есть следующий код для получения текущего дня:

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

Спасибо

Ответы [ 5 ]

20 голосов
/ 01 февраля 2012
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 даты, который переносится с time.h. Смотри это

19 голосов
/ 14 июня 2016

Это прекрасно работает для меня:

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

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

1 голос
/ 01 февраля 2012

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

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

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

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

На самом деле вам даже не нужно выражение "если":

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

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

0 голосов
/ 14 июня 2019
const monthNames = ["January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December"];                                       
let today = new Date();
let dd = today.getDate();

let mm = today.getMonth()+1;
let yyyy = today.getFullYear();
if(dd<10) 
{
    dd='0'+dd; 
} 
if(mm<10) 
{
    mm='0'+mm;
} 
dd = new Date(yyyy, mm-1, 0).getDate(); 

let month = '';                     
mm == 1 ? month = monthNames[monthNames.length - 1] : month = monthNames[mm-2];                                         
mm == 1 ? yyyy = yyyy - 1 : '';                                                                                 

let lastDay = month+'-'+dd+'-'+yyyy; 
0 голосов
/ 28 ноября 2018
var lastdayoflastmonth = new Date();
lastdayoflastmonth.setMonth(lastdayoflastmonth.getMonth(), 0);
var firstdayoflastmonth = new Date();
firstdayoflastmonth.setDate(1);
firstdayoflastmonth.setMonth(firstdayoflastmonth.getMonth()-1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...