Javascript - Get Previous Months Date

后端 未结 6 897
情深已故
情深已故 2021-02-14 12:25

If i have a variable that returns a date, in the format of dd MMM yyyy, so 28 Aug 2014, how can i get the date of the previous month.

I can modify the month via:

相关标签:
6条回答
  • 2021-02-14 12:51

    For all date related activities I recommend using the moment.js library and as you are using AngularJS there is a library for this: https://github.com/urish/angular-moment.

    Take a look at the moment.js documentation and you will see it makes it much easier to manipulate dates in JavaScript: http://momentjs.com/docs/#/get-set/month/

    You will easily be able to solve the problem you are facing, for example:

    var now = moment('01/01/2014').subtract(1, 'months').format('DD/MM/YYYY');
    

    now would then equal 01/12/2013.

    Hope this helps!

    0 讨论(0)
  • 2021-02-14 12:52
    var myVariable = "28 Aug 2014"
    var makeDate = new Date(myVariable);
    makeDate = new Date(makeDate.setMonth(makeDate.getMonth() - 1));
    

    Update:

    A shorter version:

    var myVariable = "28 Aug 2014"
    var makeDate = new Date(myVariable);
    
    console.log('Original date: ', makeDate.toString());
    
    makeDate.setMonth(makeDate.getMonth() - 1);
    
    console.log('After subtracting a month: ', makeDate.toString());

    Update 2:

    If you don't want to deal with corner cases just use moment.js. Native JavaScript API for Date is bad.

    0 讨论(0)
  • 2021-02-14 12:59

    You could use moment.js subtract function for this.

    var day = moment("2014-08-28");
    day.subtract(1, 'months');
    
    0 讨论(0)
  • 2021-02-14 13:11

    Just subtract the number of months from the month parameter and don't worry if the value is going to be negative. It will be handled correctly.

    new Date(2014, 0, 1) // 1st Jan 2014
    new Date(2014, -1, 1) // 1st Dec 2013
    
    0 讨论(0)
  • 2021-02-14 13:15

    There is my way to get previous months.

    const formatter = new Intl.DateTimeFormat("default", {
      month: "long"
    });
    const date = new Date();
    
    let number = 1;
    let prevMonth = formatter.format(
      new Date(date.getFullYear(), date.getMonth() - `${number}`)
    );
    
    0 讨论(0)
  • 2021-02-14 13:17

    This returns all previous months with the beginning and end of the month

         var now = new Date();
                var start_month = new Date();
                start_month.setMonth(now.getMonth() - 5);
                for (var d = start_month; d <= now; d.setMonth(d.getMonth() + 1)) {
                    var firstDay = new Date(d.getFullYear(), d.getMonth(), 1);
                    var x = new Date(firstDay);
                    x.setDate(0);
                    x.setDate(1);
    
                    var date = new Date(x);
                    var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
                    var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
    
                    var startDate = `${firstDay.getFullYear()}-${firstDay.getMonth() + 1}-${firstDay.getDate()}`;
                    var endDate = `${lastDay.getFullYear()}-${lastDay.getMonth() + 1}-${lastDay.getDate()}`;
                    console.log(startDate)
                    console.log(endDate)
                }
    
    0 讨论(0)
提交回复
热议问题