在javascript中查找上个月的第一天

时间:2009-03-03 04:27:29

标签: javascript

给定一个日期对象,如何在javascript中获取上个月的第一天

6 个答案:

答案 0 :(得分:36)

function firstDayInPreviousMonth(yourDate) {
    var d = new Date(yourDate);
    d.setDate(1);
    d.setMonth(d.getMonth() - 1);
    return d;
}
编辑:好吧......我肯定在这里学到了一些东西。我认为这是涵盖所有案例的最简单的解决方案(是的,它适用于1月份):

function firstDayInPreviousMonth(yourDate) {
    return new Date(yourDate.getFullYear(), yourDate.getMonth() - 1, 1);
}

答案 1 :(得分:13)

以下内容应该有效:

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);
}

请记住,月份是零基础的,因此12月 11 而不是12。

但是,正如其他人所指出的那样,即使作为原子构造函数的一部分,月份也会包含,所以以下内容也是可能的:

now = new Date();
firstDayPrevMonth = new Date(now.getFullYear(), now.getMonth() - 1, 1);

答案 2 :(得分:4)

我喜欢这个解决方案。它可能不是最简短的,但它强调了Date()对象上的setDate()方法的一些功能,并不是每个人都熟悉的:

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库完成了繁重的任务。

您可以看到working Plunk here

答案 3 :(得分:0)

这将有助于获得上个月的第一个和最后一个日期。

   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;
}

答案 4 :(得分:0)

我需要在BootStrap Min月份中使用该月份的请求,并且不想将其全部写完。

Manager

答案 5 :(得分:0)

为什么要重新发明轮子?

使用 moment.js 或其中一种替代方法(Luxon、Day.js 等):

moment().subtract(1, "months").startOf("months").toDate()