Учитывая объект даты, как получить свой предыдущий месяц в первый день в javascript
Найти первый день предыдущего месяца в javascript
Ответ 1
function firstDayInPreviousMonth(yourDate) {
var d = new Date(yourDate);
d.setDate(1);
d.setMonth(d.getMonth() - 1);
return d;
}
EDIT: Хорошо... Я определенно кое-что узнал. Я думаю, что это самое простое решение, которое охватывает все случаи (и да, это работает в январе):
function firstDayInPreviousMonth(yourDate) {
return new Date(yourDate.getFullYear(), yourDate.getMonth() - 1, 1);
}
Ответ 2
Следующее должно работать:
now = new Date();
if (now.getMonth() == 0) {
current = new Date(now.getFullYear() - 1, 11, 1);
} else {
current = new Date(now.getFullYear(), now.getMonth() - 1, 1);
}
имея в виду, что месяцы основаны на нулевом значении, так что декабрь составляет 11, а не 12.
Но, как указывали другие, месяц обертывается, даже как часть атомарного конструктора, поэтому возможно также следующее:
now = new Date();
firstDayPrevMonth = new Date(now.getFullYear(), now.getMonth() - 1, 1);
Ответ 3
Мне нравится это решение. Это может быть не кратчайший, но он выделяет некоторые функции метода setDate() для объектов Date(), которые не все будут знакомы с:
function firstDayPreviousMonth(originalDate) {
var d = new Date(originalDate);
d.setDate(0); // set to last day of previous month
d.setDate(1); // set to the first day of that month
return d;
}
Используется тот факт, что .setDate(0) изменит дату на последний день предыдущего месяца, в то время как .setDate(1) изменит ее (далее), чтобы указать на первый день этого месяц. Это позволяет основным Javascript-библиотекам делать тяжелый подъем.
Вы можете увидеть рабочий Plunk здесь.
Ответ 4
Это поможет получить предыдущий месяц в первой и последней датах.
function getLastMonth(){
var now = new Date();
var lastday = new Date(now.getFullYear(), now.getMonth(), 0);
var firstday = new Date(lastday.getFullYear(), lastday.getMonth(), 1);
var lastMonth = firstday.getDate()+'/'+(firstday.getMonth()+1)+'/'+firstday.getFullYear()+' - '+lastday.getDate()+'/'+(firstday.getMonth()+1)+'/'+lastday.getFullYear();
return lastMonth;
}