rails(time_ago_in_words对面)是否有时间提前词

Is there a time ahead words in rails (opposite of time_ago_in_words)

有time_ago_in_words对面的rails帮手吗?我似乎找不到相反的东西……从现在起我可以将 7 天转换为 "in about 1 week"。

我可以让它为过去工作:

 <%= time_ago_in_words( milestone.due_date) %>

但这对未来不起作用:

   <%= time_ahead_in_words(milestone.due_date) %>

难倒了。

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

所以你可以这样设置:

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

听起来您需要 "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

您可以使用 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

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 仍然会 return 结果,所以要小心!

  2. 如果在 rails 控制台中使用 distance_of_time_in_wordsyou need to prepend helper.,就像这样:

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

参考文献: