我想用相关词显示关闭时间,例如“您还有 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/