我的Orientation模型如下所示:
create_table "orientations", :force => true do |t|
t.date "class_date"
t.text "class_time"
t.integer "seats"
t.boolean "active", :default => true
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
我想获取class_date
和class_time
字段并将它们连接起来以创建一个可以与当前日期/时间进行比较的DateTime对象。我知道我可以通过以下方式解析时间:
1.9.3-p545 :022 > o.class_time
=> "9:30am"
1.9.3-p545 :023 > Time.parse(o.class_time)
=> 2014-07-28 09:30:00 -0400
但我不确定如何将其与班级日期结合起来。
答案 0 :(得分:3)
您可以像这样结合日期和时间:
date = '2014-07-09'
time = '9:30am'
DateTime.parse([ date, time ].join(' '))
# => Wed, 09 Jul 2014 09:30:00 +0000
我已将Rails中的本地时区设置为UTC。
答案 1 :(得分:0)
parse
类有类似的方法Date
:
pry(main)> Date.parse '2013-08-31'
=> #<Date: 2013-08-31 ((2456536j,0s,0n),+0s,2299161j)>
请注意此类方法也存在于DateTime
中:
pry(main)> DateTime.parse '2013-08-31 9:30am'
=> #<DateTime: 2013-08-31T09:30:00+00:00 ((2456536j,34200s,0n),+0s,2299161j)>
您可以在我的文章Ruby for Admins: Date and Time
中了解有关Ruby日期/时间的更多信息答案 2 :(得分:0)
你把它钉在了@tadman上。仅为后代,这是方法和电话......
在我看来......
<% if orientation.active? and Orientation.is_not_past(orientation) %>
<li class="class-available"><i class="fa fa-check"></i>
<%= link_to orientation.class_time, new_orientation_registration_path(orientation) %>
<% else %>
<li class="class-closed"><i class="fa fa-minus-circle"></i> <%= orientation.class_time
%GT; &lt;%end%&gt;
在我的模特中......
def self.is_not_past(orientation)
date = orientation.class_date
time = Time.parse(orientation.class_time)
datetime = DateTime.parse([ date, time ].join(' '))
datetime > Time.now
end