HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavascriptModerate

Creating an array with quarter hour times

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
creatingwitharrayhourquartertimes

Problem

There is no need for me to use 50 lines of code here, but how can I populate this array in a loop without using date/time methods.

var timeoptions = ["00:00", "00:15", 
               "00:30", "00:45",
               "01:00", "01:15", 
               "01:30", "01:45",
               "02:00", "02:15", 
               "02:30", "02:45",
               "03:00", "03:15", 
               "03:30", "03:45",
               "04:00", "04:15", 
               "04:30", "04:45",
               "05:00", "05:15", 
               "05:30", "05:45",
               "06:00", "06:15", 
               "06:30", "06:45",
               "07:00", "07:15", 
               "07:30", "07:45",
               "08:00", "08:15", 
               "08:30", "08:45",
               "09:00", "09:15", 
               "09:30", "09:45",
               "10:00", "10:15", 
               "10:30", "10:45",
               "11:00", "11:15", 
               "11:30", "11:45",
               "12:00", "12:15", 
               "12:30", "12:45",
               "13:00", "13:15", 
               "13:30", "13:45",
               "14:00", "14:15", 
               "14:30", "14:45",
               "15:00", "15:15", 
               "15:30", "15:45",
               "16:00", "16:15", 
               "16:30", "16:45",
               "17:00", "17:15", 
               "17:30", "17:45",
               "18:00", "18:15", 
               "18:30", "18:45",
               "19:00", "19:15", 
               "19:30", "19:45",
               "20:00", "20:15", 
               "20:30", "20:45",
               "21:00", "21:15", 
               "21:30", "21:45",
               "22:00", "22:15", 
               "22:30", "22:45",
               "23:00", "23:15", 
               "23:30", "23:45"
                ];

Solution

var quarterHours = ["00", "15", "30", "45"];
var times = [];
for(var i = 0; i < 24; i++){
  for(var j = 0; j < 4; j++){
    times.push(i + ":" + quarterHours[j]);
  }
}


That's the really quick way without thinking. There might be better ways, but this is what I come up with in 2 minutes.

After testing, you'll find out that it doesn't have a 0 prefix for hours 1 through 9. They show up as "9:45". You could either add a check for that, like so:

var quarterHours = ["00", "15", "30", "45"];
var times = [];
for(var i = 0; i < 24; i++){
  for(var j = 0; j < 4; j++){
    if(i < 10){
      times.push("0" + i + ":" + quarterHours[j]);
    } else {
      times.push(i + ":" + quarterHours[j]);
    }
  }
}


Some more minor cleanup...

var quarterHours = ["00", "15", "30", "45"];
var times = [];
for(var i = 0; i < 24; i++){
  for(var j = 0; j < 4; j++){
    var time = i + ":" + quarterHours[j];
    if(i < 10){
      time = "0" + time;
    }
    times.push(time);
  }
}


Or declare another array with "00", "01", "02"... "23".

Basically what you end up doing is creating every combination of hours and 15 minutes to recreate that big array of yours.

Code Snippets

var quarterHours = ["00", "15", "30", "45"];
var times = [];
for(var i = 0; i < 24; i++){
  for(var j = 0; j < 4; j++){
    times.push(i + ":" + quarterHours[j]);
  }
}
var quarterHours = ["00", "15", "30", "45"];
var times = [];
for(var i = 0; i < 24; i++){
  for(var j = 0; j < 4; j++){
    if(i < 10){
      times.push("0" + i + ":" + quarterHours[j]);
    } else {
      times.push(i + ":" + quarterHours[j]);
    }
  }
}
var quarterHours = ["00", "15", "30", "45"];
var times = [];
for(var i = 0; i < 24; i++){
  for(var j = 0; j < 4; j++){
    var time = i + ":" + quarterHours[j];
    if(i < 10){
      time = "0" + time;
    }
    times.push(time);
  }
}

Context

StackExchange Code Review Q#121066, answer score: 18

Revisions (0)

No revisions yet.