Найти первый день предыдущего месяца в 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;
}