从方法rails获取剩余的日子

时间:2017-03-23 20:29:14

标签: ruby-on-rails ruby time

我有一个starts_at属性,它是标准的DateTime数据类型。我想花点时间和当前时间提出3天,直到事件发生。这是我目前的方法

def days_remaining
  (Date.parse(starts_at) - Date.current).to_i
end

但是这给了我这个错误no implicit conversion of ActiveSupport::TimeWithZone into String

这看起来非常简单,但我似乎无法弄明白。

3 个答案:

答案 0 :(得分:1)

Date.parse期待String参数,但starts_atDateTimeto_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

这可能就是您所需要的。创建一系列日期,转换为数组,每个条目是一天,然后计算那些