2013-08-01 75 views
8

這是一個非常簡單的問題,可能之前已經提出並回答過,但我一直未能找到任何內容。Rails每天12小時上午/下午的範圍

無論如何,我需要一個範圍/陣列12小時的時間,所以像12AM - 11AM,12PM - 11PM。你可能會得到它的要點。現在我試圖做一個荒謬複雜的方法,包括將AM映射到一個陣列上,將PM映射到另一個陣列上,然後將兩個陣列連接在一起。必須有一個更簡單的方法來做到這一點。

我知道Rails time_select,但我需要的格式與它提供的格式不同。有什麼建議麼?

說明:所以我在找的是12-hour clock,AM和PM。如果我想要一個24小時的時鐘,我可以做(0..24),然後完成。但12小時的時間從12點到11點,然後從12點到11點。我很確定以前有人這樣做過。

+0

其實,我沒有理解。 :-)如果第二次在第二天的假設是第二天,那麼你給出的例子相隔23小時。 「12小時時間」是什麼意思?此外,你說你想讓你看起來像「HH:00」,但是這種格式不符合你之前的兩個例子。你正在尋找只是字符串輸出?你在尋找「範圍」結構嗎?您是否在尋找兩個Ruby或Rails類時間對象,一個用於開始和結束?如果你可以舉一個你想看到的「輸入」和「輸出」的例子,這將有所幫助。 –

+0

http://apidock.com/ruby/Time/strftime=> exemples =>「%r - 12小時的時間(%I:%M:%S%p)」;在我的irb控制檯中:'Time.now.strftime(「%r」)#=>「01:37:01 PM」' – MrYoshiji

+0

@MrYoshiji我不是在尋找當前時間。我在[12小時格式](https://en.wikipedia.org/wiki/12-hour_clock) – irosenb

回答

16

我同意@ MrYoshi的評論,格式化的日期的最簡單方法是.strftime(), 看到RubyDoc所有可能的選項

例子:

Time.now.strftime("%I:%M %p") 

輸出:HH:MM AM

或你的字面意思要求:

Time.now.strftime("%I:00") 

輸出:HH:00

至於你提到time_select我假設你想提供時間爲用戶可選擇的範圍,所以嘗試這些選項time_selectmore options):

time_select 'game', 'game_time', {:minute_step => 60, :ampm => true} 

也是這個前面的問題: Time select form helper with 12 hour format for Rails 3?

6

的Rails這是否建在

<%= f.time_select :start, {ampm: true} %> 

http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-time_select

+0

這對我來說沒有任何意義,爲什麼會是03:PM/15。這不是標準 - 至少,不是在美國。這是如何在其他國家完成的?我期望它是3/15/PM,在3個選擇框中 - 就像任何其他常規網站一樣嗎?我知道你不是編寫Rails代碼的人,但這並不能真正爲我解決這個問題。 – gregblass

+0

我敢打賭,有一個配置,或者它是基於你的語言環境。我不認爲它爲我製作了03:PM/15。看起來破碎了。我今天沒有在Rails應用程序,或者我會檢查,對不起@GregBlass – Will

+0

這個問題(編輯2013年8月1日)字面上說「我知道Rails time_select,但我需要一個不同於它提供的格式。」所以雖然有趣,但你並不是尋求答案。 –

3

我知道這已經一段時間以前回答內置的,但我需要一個自定義函數來獲取這些值,並寫了:

times = {"12 AM" => 0}.merge!(1.upto(11).collect { |n| {"#{n} AM" => n} }.reduce(Hash.new, :merge)).merge!({"12 PM" => 12}).merge!(1.upto(11).collect { |n| {"#{n} PM" => n + 12} }.reduce(Hash.new, :merge)) 

這產生了:

{"12 AM"=>0, "1 AM"=>1, "2 AM"=>2, "3 AM"=>3, "4 AM"=>4, "5 AM"=>5, "6 AM"=>6, "7 AM"=>7, "8 AM"=>8, "9 AM"=>9, "10 AM"=>10, "11 AM"=>11, "12 PM"=>12, "1 PM"=>13, "2 PM"=>14, "3 PM"=>15, "4 PM"=>16, "5 PM"=>17, "6 PM"=>18, "7 PM"=>19, "8 PM"=>20, "9 PM"=>21, "10 PM"=>22, "11 PM"=>23} 
相關問題