我是Ruby / Ruby on Rails的新手,我想知道是否有可能从我的数据库中的datetime
表中获取:starts_at
条目events
并从中获取整数代表小时值?
日期时间“:starts_at
”具有布局:
YYYY-MM-DD HH:MM:SS
e.g. 2016-01-03 11:05:00
我想要的只是表示小时的“11”,所以我可以将其设置为变量“start_hour
”。
我不知道如何从数据库中获取我的:starts_at
值,但这里有一些尝试代码显示我的意思。
这样做的:
events.each do |event|
start_time = event(:starts_at.hour) #is this how to obtain :starts_at?
end
将返回“11:00”而不是“11”,我将如何缩小到“11”?如果时间是“08:00”,它应该是“8”?
答案 0 :(得分:2)
event.starts_at
是DateTime对象。使用Time#strftime获取所需的格式。例如:
event.starts_at.strftime("%H")
答案 1 :(得分:1)
event.starts_at返回类ActiveSupport::TimeWithZone的对象 它提供了一个'小时'读者:
event.starts_at.hour
但请注意,starts_at也可能是零。因此,如果您无法确保存在starts_at,最好使用以下内容:
event.starts_at && event.starts_at.hour