Rails 日期时间辅助逻辑

Rails DateTime helper logic

快速提问。我正在使用 distance_of_time_in_words 助手来检查创建对象的天数。这工作正常,但我不希望它在计算一天之前必须经过 24 小时,但希望它在“00:00”

后计算“1”天

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

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

我猜这就是你的意思。

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

您也许可以使用

time_ago_in_words(date_item_was_created.at_midnight)

time_ago_in_words 允许您放弃添加 'now' 时间*,并将创建日期移回午夜,您将跨越一天标记 在下一个午夜。根据 API doc,它应该给你 'round' 天的时间来处理一天中的任何事情,这听起来像你想要的。

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