是否有时间在rails中的话(与time_ago_in_words相反)

时间:2015-07-06 18:58:31

标签: ruby-on-rails helpers

是否有与time_ago_in_words相对的rails helper?我似乎无法找到相反的情况......我可以在7天后将其转换为“大约1周”。

我可以让它适用于过去:

 <%= time_ago_in_words( milestone.due_date) %>

但这对未来不起作用:

   <%= time_ahead_in_words(milestone.due_date) %>

难住了。

4 个答案:

答案 0 :(得分:5)

您可以改用distance_of_time_in_words(from_time, to_time = 0, options = {})

所以你可以这样设置:

<%= distance_of_time_in_words(Time.now, milestone.due_date) %>

答案 1 :(得分:2)

听起来你需要“distance_in_time”辅助方法。

实施例

    from_time = Time.current
helper.distance_of_time_in_words(from_time, from_time + 50.minutes)

=>about 1 hour

更具体地说,在你的情况下,你会这样做:

from_time = Time.current
    helper.distance_of_time_in_words(from_time, from_time + 6.days)

    =>about 7 days

答案 2 :(得分:1)

您可以使用distance_of_time_in_words。例如:

distance_of_time_in_words(Time.current, milestone.due_date)

等同于您的time_ahead_in_words伪代码。

有关详细信息,请参阅distance_of_time_in_words documentation

答案 3 :(得分:0)

distance_of_time_in_words是您所追求的。请注意:

  1. distance_of_time_in_words不是 假设 ,而是您从现在起 的意思,所以您必须告诉Time.current。例如
appointment_start_time = ActiveSupport::TimeZone['Sydney'].parse("2022-11-14 07:00:00 UTC")
distance_of_time_in_words(Time.current, appointment_start_time)
=> "about 2 years"
    如果时间已经过去,
  1. distance_of_time_in_words仍会返回结果,所以请注意!

  2. ,如果在Rails控制台中使用you need to prepend helper.,则使用distance_of_time_in_words,就像这样:

helper.distance_of_time_in_words(Time.current, appointment_start_time)
=> "about 2 years"

参考: