在Ruby中显示每天每小时的最简单方法

时间:2011-01-08 15:37:10

标签: ruby

我有一个日历屏幕,我想在这里显示一天中的小时数:

12:00am

1:00am

2:00am

..

4:00pm

5:00pm

etc.

作为一个完整的Ruby noob,我想知道是否有人可以帮我找出最简单的显示方式。

2 个答案:

答案 0 :(得分:4)

#!/usr/bin/env ruby

# without using actual `Date` objects ...

p ["12:00am"] + (1..11).map {|h| "#{h}:00am"}.to_a + 
  ["12:00pm"] + (1..11).map {|h| "#{h}:00pm"}.to_a

["12:00am", "1:00am", "2:00am", "3:00am", "4:00am", "5:00am", "6:00am",
"7:00am", "8:00am", "9:00am", "10:00am", "11:00am", "12:00pm", "1:00pm",
"2:00pm", "3:00pm", "4:00pm", "5:00pm", "6:00pm", "7:00pm", "8:00pm",
"9:00pm", "10:00pm", "11:00pm"]

或使用实际的DateTime个对象和%I:%M%p作为format

#!/usr/bin/env ruby

require "Date"

for hour in 0..23 do
  d = DateTime.new(2010, 1, 1, hour, 0, 0)
  p d.strftime("%I:%M%p")  
end

哪个会打印:

"12:00AM"
"01:00AM"
"02:00AM"
"03:00AM"
"04:00AM"
"05:00AM"
"06:00AM"
"07:00AM"
"08:00AM"
"09:00AM"
"10:00AM"
"11:00AM"
"12:00PM"
"01:00PM"
"02:00PM"
"03:00PM"
"04:00PM"
"05:00PM"
"06:00PM"
"07:00PM"
"08:00PM"
"09:00PM"
"10:00PM"
"11:00PM"

答案 1 :(得分:2)

你可以这样生成:

array = ['12:00am'] + (1..11).map {|h| "#{h}:00am"} + ['12:00pm'] + (1..11).map {|h| "#{h}:00pm"}

或简单地写出数组(这更有效):

array = ["12:00am", "1:00am", "2:00am", "3:00am", "4:00am", "5:00am", "6:00am", "7:00am", "8:00am", "9:00am", "10:00am", "11:00am", "12:00pm", "1:00pm", "2:00pm", "3:00pm", "4:00pm", "5:00pm", "6:00pm", "7:00pm", "8:00pm", "9:00pm", "10:00pm", "11:00pm"]

然后您可以根据需要打印这些,例如

array.each do |el|
    puts el
end
相关问题