从数据库中获取日期时间值并获取其小时int

时间:2016-02-03 11:18:20

标签: ruby-on-rails ruby sqlite datetime

我是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”?

2 个答案:

答案 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