Getting 2020-02-29T00:00:00.000Z for March using momentjs or Date()

Viewed 830

I'm trying to get start and end of the current month but for march it is giving me the start date as 2020-02-29T00:00:00.000Z

Using momentjs

    var firstDay = new moment().startOf('month').utcOffset(0);
    firstDay.set({hour:0,minute:0,second:0,millisecond:0});
    var lastDay = new moment().endOf('month').utcOffset(0);
    lastDay.set({hour:23,minute:59,second:59,millisecond:0})

Using Date()

    var date = new Date(),
        y = date.getFullYear(),
        m = date.getMonth();
    var firstDay = new Date(y, m, 1);
    var lastDay = new Date(y, m + 1, 1);

How to solve this?

2 Answers

Try startOf / endOf followed by utcOffset()

Note: startOf - set to the first of this month, 12:00 am

var firstDay = new moment('2020-02-29T00:00:00.000Z').utcOffset(0).startOf('month');
console.log(firstDay.format())

var lastDay = new moment('2020-02-29T00:00:00.000Z').utcOffset(0).endOf('month');
console.log(lastDay.format())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

For march it should be like this using utcOffset(0) then call the function startof():

var startDay = new moment().utcOffset(0).startOf('month').format();
var endDay = new moment().utcOffset(0).endOf('month').format();

console.log(startDay);
console.log(endDay);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

Related