I am trying to check if a time occurs between two times 4:29 PM and 8:59AM using moment.js, however it doesn’t work, here is my code:
var dropoff_date = new Date(document.getElementById("car-rental-dropoff-date").value);
var dropoff_time_string = document.getElementById("car-rental-dropoff-time").value;
var format = 'h:mm A';
var dropoff_time = moment(dropoff_time_string,format),
ahStart = moment('4:29 PM', format),
ahEnd = moment('8:59 AM', format);
if ((moment(dropoff_time).isBetween(ahStart, ahEnd)) {
alert ("it works!");
}
However it does work if I change 8:59AM to 9:00 PM, it just doesn’t work if I go into the AM, can anyone help me fix this?
EDIT 3: I just got it working, but this code seems a little much, I would appreciate it if anyone has a better way of doing this:
var dropoff_time_string = document.getElementById("car-rental-dropoff-time").value;
var format = 'h:mm A';
var dropoff_time = moment(dropoff_time_string,format),
closingToday = moment('4:30 PM', format),
closingYesterday = moment('4:30 PM', format).subtract(1, 'day'),
openingToday = moment('9:00 AM', format),
openingTomorrow = moment('9:00 AM', format).add(1, 'day');
if (((moment(dropoff_time).isBetween(closingYesterday , openingToday)) || (moment(dropoff_time).isBetween(closingToday , openingTomorrow))) {
//bill = (bill+20000);
alert ("IT WORKS!" );
}
Advertisement
Answer
The moment parser is picky I guess. This format works, plus you were missing some var declarations on the time variables and missing some semicolons at the end of lines:
var format = "MM-DD-YY hh:mm A";
var dropoff_time = moment("01-01-01 8:21 pm", format);
var ahStart = moment('01-01-01 4:30 pm', format);
var ahEnd = moment('01-02-01 8:30 am', format);
if (dropoff_time.isBetween(ahStart, ahEnd)) {
console.log("it works!");
}