-1

So, I have two variables and one function:

 function addDays(date, days) {
    var result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
  }
  
 const dateToCompare=moment.utc(endDate).format('DD-MM-YYYY')
 const maximum=moment.utc(addDays(new Date(),14)).format('DD-MM-YYYY')

However, I do not know how to compare them, since they are now formatted as strings, but at the same time new Date(dateToCompare) doesn't work.

Can someone give me a hint?

iulia_g31
  • 13
  • 5

2 Answers2

0

If what you're trying to do is strip out the time and just compare the dates, don't do a string conversion; just set the hour, minutes, and seconds on your Date objects to zero before making your date comparison.

let foo = new Date();
console.log(foo);// date includes time
foo.setHours(0); foo.setMinutes(0); foo.setSeconds(0);
console.log(foo) // date set to midnight (in your timezone)
Daniel Beck
  • 20,653
  • 5
  • 38
  • 53
0

Why are you using built–in methods to add days when you are using moment.js? Consider:

let maximum = moment.utc().add('day',14).format('DD-MM-YYYY')

To set a date to the start of a day, use the moment.js startOf method:

let maximum = moment.utc().add('day',14).startOf('day')
let dateToCompare = moment.utc(endDate).startOf('day')

You can compare the dates as strings if formatted as YYYY-MM-DD, or just leave them as moment objects and compare those using isSame, isAfter, isSameOrBefore, etc.

When parsing strings as in:

const dateToCompare=moment.utc(endDate)

you should always pass the format to parse unless endDate is a Date or moment object. new Date(dateToCompare) doesn't work because Why does Date.parse give incorrect results?

RobG
  • 142,382
  • 31
  • 172
  • 209