iro*_*enb 13 ruby time datetime ruby-on-rails
这是一个非常简单的问题,之前可能已被问过并回答过,但我找不到任何东西.
无论如何,我需要一个范围/阵列12小时的时间,所以像12 AM - 11 AM,12 PM - 11PM.你可能会得到它的要点.现在我正在尝试做一个荒谬复杂的方法,包括将AM映射到一个阵列,将PM映射到另一个阵列,然后将两个阵列连接在一起.必须有一种更简单的方法来做到这一点.
我知道Rails time_select
,但我需要的格式与它提供的格式不同.有什么建议?
澄清:所以我要找的是12小时制,AM和PM.如果我想要一个24小时制的时钟,我就可以做(0..24)
,并且完成.但是12小时的时钟从12-11 AM开始,然后从12-11 PM开始.我很确定有人之前做过这件事.
caf*_*ech 24
我同意@ MrYoshi的评论,格式化日期的最简单方法是.strftime()
,请参阅RubyDoc了解所有可能的选项
例:
Time.now.strftime("%I:%M %p")
Run Code Online (Sandbox Code Playgroud)
输出:HH:MM AM
或者你真正要求的:
Time.now.strftime("%I:00")
Run Code Online (Sandbox Code Playgroud)
输出:HH:00
正如您所提到的,time_select
我假设您希望将时间作为用户可选范围提供,因此请尝试以下选项time_select
(更多选项):
time_select 'game', 'game_time', {:minute_step => 60, :ampm => true}
Run Code Online (Sandbox Code Playgroud)
还有上一个问题:Rails 3的时间选择格式助手为12小时格式?
Rails就是内置的
<%= f.time_select :start, {ampm: true} %>
Run Code Online (Sandbox Code Playgroud)
http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-time_select
我知道这已经在内置了一段时间之前已经回答了.但我需要一个自定义函数来获取这些值并写下这个:
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))
Run Code Online (Sandbox Code Playgroud)
这会产生:
{"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}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18072 次 |
最近记录: |