All,
I have a requirement to translate a time between 0000 and 2359 in to a
single character ‘interval ID’ based on the time. For example, if the
time is between 0000 and 0059, ‘0’ should be returned, if it’s between
0100 and 0159, ‘1’ should be return. The problem is that 0700-0729
should return ‘A’, 0730-0759 should return ‘B’, i.e. it’s not a simple
mapping.
I have the following, but I can’t help thinking there’s a much more
efficient way of doing it - can anyone advise, as I’m a little stuck!
xlate = [ [ ‘0000’, ‘0059’, ‘0’ ], [ ‘0100’, ‘0159’, ‘1’ ],
[ ‘0200’, ‘0259’, ‘2’ ], [ ‘0300’, ‘0359’, ‘3’ ],
[ ‘0400’, ‘0459’, ‘4’ ], [ ‘0500’, ‘0559’, ‘5’ ],
[ ‘0600’, ‘0659’, ‘6’ ], [ ‘0700’, ‘0729’, ‘A’ ],
[ ‘0730’, ‘0759’, ‘B’ ], [ ‘0800’, ‘0829’, ‘C’ ],
[ ‘0830’, ‘0859’, ‘D’ ], [ ‘0900’, ‘0929’, ‘E’ ],
[ ‘0930’, ‘0959’, ‘F’ ], [ ‘1000’, ‘1029’, ‘G’ ],
[ ‘1030’, ‘1059’, ‘H’ ], [ ‘1100’, ‘1129’, ‘I’ ],
[ ‘1130’, ‘1159’, ‘J’ ], [ ‘1200’, ‘1229’, ‘K’ ],
[ ‘1230’, ‘1259’, ‘L’ ], [ ‘1300’, ‘1329’, ‘M’ ],
[ ‘1330’, ‘1359’, ‘N’ ], [ ‘1400’, ‘1429’, ‘O’ ],
[ ‘1430’, ‘1459’, ‘P’ ], [ ‘1500’, ‘1529’, ‘Q’ ],
[ ‘1530’, ‘1559’, ‘R’ ], [ ‘1600’, ‘1629’, ‘S’ ],
[ ‘1630’, ‘1659’, ‘T’ ], [ ‘1700’, ‘1729’, ‘U’ ],
[ ‘1730’, ‘1759’, ‘V’ ], [ ‘1800’, ‘1829’, ‘W’ ],
[ ‘1830’, ‘1859’, ‘X’ ], [ ‘1900’, ‘1959’, ‘Y’ ],
[ ‘2000’, ‘2059’, ‘Z’ ], [ ‘2100’, ‘2159’, ‘7’ ],
[ ‘2200’, ‘2259’, ‘8’ ], [ ‘2300’, ‘2359’, ‘9’ ] ]
xlate.each do |range|
return range[2] if time >= range[0] && time <= range[1]
end