It would be better if you used Date
object instead of strings
, or used moment.js
which provide many useful methods for this.
But any way it will need just a loop with some checks to achieve what you want, I made a function that will return an array of all times between your fromtime
and totime
:
function returnTimesInBetween(start, end) {
var timesInBetween = [];
var startH = parseInt(start.split(":")[0]);
var startM = parseInt(start.split(":")[1]);
var endH = parseInt(end.split(":")[0]);
var endM = parseInt(end.split(":")[1]);
if (startM == 30)
startH++;
for (var i = startH; i < endH; i++) {
timesInBetween.push(i < 10 ? "0" + i + ":00" : i + ":00");
timesInBetween.push(i < 10 ? "0" + i + ":30" : i + ":30");
}
timesInBetween.push(endH + ":00");
if (endM == 30)
timesInBetween.push(endH + ":30")
return timesInBetween.map(getGenTime);
}
Demo:
let fromtime = '09:00:00'
let totime = '21:00:00'
let getGenTime = (timeString) => {
let H = +timeString.substr(0, 2);
let h = (H % 12) || 12;
let ampm = H < 12 ? " AM" : " PM";
return timeString = h + timeString.substr(2, 3) + ampm;
}
function returnTimesInBetween(start, end) {
var timesInBetween = [];
var startH = parseInt(start.split(":")[0]);
var startM = parseInt(start.split(":")[1]);
var endH = parseInt(end.split(":")[0]);
var endM = parseInt(end.split(":")[1]);
if (startM == 30)
startH++;
for (var i = startH; i < endH; i++) {
timesInBetween.push(i < 10 ? "0" + i + ":00" : i + ":00");
timesInBetween.push(i < 10 ? "0" + i + ":30" : i + ":30");
}
timesInBetween.push(endH + ":00");
if (endM == 30)
timesInBetween.push(endH + ":30")
return timesInBetween.map(getGenTime);
}
console.log(returnTimesInBetween(fromtime, totime));
Edit:
To get Date
objects from your fromtime
and totime
strings you can do it with Date
constructor:
let fromtime = '09:00:00';
var d = new Date(Date.UTC(2017, 10, 10, parseInt(fromtime.split(":")[0]), parseInt(fromtime.split(":")[1])));
Just be careful with Locale and TimeZones, you may find some hour differents in the result.
Demo:
let fromtime = '09:00:00'
let totime = '21:00:00'
let getGenTime = (timeString) => {
let H = +timeString.substr(0, 2);
let h = (H % 12) || 12;
let ampm = H < 12 ? " AM" : " PM";
return timeString = h + timeString.substr(2, 3) + ampm;
}
function returnTimesInBetween(start, end) {
var timesInBetween = [];
var startH = parseInt(start.split(":")[0]);
var startM = parseInt(start.split(":")[1]);
var endH = parseInt(end.split(":")[0]);
var endM = parseInt(end.split(":")[1]);
if (startM == 30)
startH++;
for (var i = startH; i < endH; i++) {
timesInBetween.push(i < 10 ? "0" + i + ":00" : i + ":00");
timesInBetween.push(i < 10 ? "0" + i + ":30" : i + ":30");
}
timesInBetween.push(endH + ":00");
if (endM == 30)
timesInBetween.push(endH + ":30")
timesInBetween.map(getGenTime);
return timesInBetween.map(time => new Date(Date.UTC(2017, 10, 10, parseInt(time.split(":")[0]), parseInt(time.split(":")[1]))));
}
console.log(returnTimesInBetween(fromtime, totime));