ruby-on-rails - 时间点 : within an hour, 是在今天、明天晚于明天还是已经过去了?

标签 ruby-on-rails ruby ruby-on-rails-4

我想用相关词显示关闭时间,例如“您还有 2 小时的时间来回答投票”。

下面有什么问题?当有例如还剩 54 分钟,返回“54 小时”。

    minute_diff = ((datetime_value - DateTime.current) * 24 * 60).to_i

    case 
    when minute_diff < 0 # past time
        [nil, "closed"]
    when minute_diff.between?(0, 59) # within an hour
        [minute_diff, "minutes"]
    when datetime_value.today? # today
        number_of_hours = (minute_diff / 60)
        [number_of_hours, "hours"]
    when datetime_value.to_date == DateTime.current.tomorrow.to_date # tomorrow
        [1, "day"]
    when datetime_value.to_date > DateTime.current.tomorrow.to_date # later than tomorrow
        number_of_days = (datetime_value.to_date - DateTime.current.to_date).to_i
        [number_of_days, "days"]
    end

(非常感谢关于返回相对时间的更好方法的建议)

最佳答案

关于你的第二个问题(提供更好的方法),你应该使用已经存在的。

if (t = DateTime.current) < datetime_value
  "You have #{distance_of_time_in_words(t, datetime_value)} left to answer the poll".
else
  "Closed"
end

如果你想处理 l18n,我最喜欢的是 "twitter-cldr" gem .

关于ruby-on-rails - 时间点 : within an hour, 是在今天、明天晚于明天还是已经过去了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32839520/

相关文章:

javascript - 评级/投票和标签 API,它们存在吗?

ruby-on-rails - Elasticsearch 嵌套

sql - 将日期范围参数传递给 Rails 中的 SQL/ActiveRecord 查询

ruby - 得到 ruby 中两个日期之间的月份,年份

javascript - 如何停止 json 数据在 Google Chrome 中自动排序?

javascript - 在 Ruby on Rails 中的 Javascript 中设置 session

ruby-on-rails - 请求 Rails 应用程序显着增加内存

ruby - 如何根据其子项之一的值删除 XML 元素?

ruby-on-rails - MiniTest - 找不到路线

ruby - 我可以从范围访问一个参数吗?