Самый простой способ отобразить каждый час дня в Ruby - PullRequest
2 голосов
/ 08 января 2011

У меня есть экран календаря, где я хочу отображать часы дня следующим образом:

12:00am

1:00am

2:00am

..

4:00pm

5:00pm

etc.

Будучи абсолютным рубиновым нубом, мне было интересно, сможет ли кто-нибудь помочь мне найти самый простой способ показать это.

Ответы [ 2 ]

4 голосов
/ 08 января 2011
#!/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 в формате :

#!/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"
2 голосов
/ 08 января 2011

Вы можете сгенерировать это так:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...