我有一个starts_at属性,它是标准的DateTime
数据类型。我想花点时间和当前时间提出3
天,直到事件发生。这是我目前的方法
def days_remaining
(Date.parse(starts_at) - Date.current).to_i
end
但是这给了我这个错误no implicit conversion of ActiveSupport::TimeWithZone into String
这看起来非常简单,但我似乎无法弄明白。
答案 0 :(得分:1)
Date.parse
期待String
参数,但starts_at
是DateTime
。
to_date
方法会将日期时间转换为日期。
def days_remaining
(starts_at.to_date - Date.current).to_i
end
但是,我不认为这是找到剩余日子的100%正确方法。
答案 1 :(得分:0)
Rails有distance_of_time_in_words
方法可以用于此类事情。还有dotiw gem可以提供更多的输出自定义:
29/04/2017
答案 2 :(得分:0)
def days_remaining
(starts_at.to_date...Date.current).to_a.count
end
这可能就是您所需要的。创建一系列日期,转换为数组,每个条目是一天,然后计算那些