Rails DateTime辅助逻辑

时间:2016-08-11 15:29:10

标签: mysql ruby-on-rails ruby datetime view-helpers

快速提问。我使用distance_of_time_in_words帮助程序来检查对象的创建天数。这样可以正常工作,但我不希望它在它计算一天之前必须进行24小时但是希望它计算在内#34; 1"一旦它是" 00:00"

例如distance_of_time_in_words(" 2016-08-11 11:00"," 2016-08-12 00:00")应该是1天但是13小时

我希望它一旦通过" 00:00"它应该算作1天?

2 个答案:

答案 0 :(得分:2)

您可以使用

time_ago_in_words(date_item_was_created.at_midnight)

time_ago_in_words允许您放弃添加“现在”时间*并通过将创建日期移回午夜,您将跨越一天标记 在下一个午夜。根据{{​​3}},它应该为你提供一天中任何一天的'轮'天,听起来就像你所追求的那样。

*如果您没有与当前时间进行比较,可以继续使用distance_of_time_in_words。

答案 1 :(得分:0)

这就是我猜的意思。

def distance_of_time_in_words(time1,time2)

  d1 = Time.parse(time1.to_s).to_date.strftime("%d").to_i
  d2 = Time.parse(time2.to_s).to_date.strftime("%d").to_i
  seconds = Time.parse(time2.to_s)- Time.parse(time1.to_s)
  hours = seconds/3600

  if d2-d1 >= 1
    return "#{(d2-d1).to_s} days"
  else
    return "#{hours.to_s} hours"
  end

end