fork download
  1. require 'date'
  2.  
  3. def hours_by_day *times
  4. time1, time2 = times.map{|s| DateTime.new *([1, 1, 1] + s)}
  5. midnight = DateTime.new(1,1,2)
  6. (time2 < time1 ?
  7. [midnight + (midnight - time1), time2] :
  8. [midnight + (time2 - time1)]
  9. ).map{|d| [d.hour, d.minute, d.second]}
  10. end
  11.  
  12. p hours_by_day([18,0,0], [3,0,0])
  13. p hours_by_day([3,0,0], [18,0,0])
Success #stdin #stdout 0.02s 5708KB
stdin
Standard input is empty
stdout
[[6, 0, 0], [3, 0, 0]]
[[15, 0, 0]]