Ruby on rails 给定时间戳-如何返回最近的单位和公制,,,例如:13分钟,1小时
给定一个时间戳,我希望有一个方法返回正确的单位(秒、小时、分钟)和该单位的正确度量 例如,对于时间戳:Ruby on rails 给定时间戳-如何返回最近的单位和公制,,,例如:13分钟,1小时,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,给定一个时间戳,我希望有一个方法返回正确的单位(秒、小时、分钟)和该单位的正确度量 例如,对于时间戳: 1 sec ago - Unit: SEC, Metric: 1 20 secs ago - Unit: SECS, Metric: 20 1 hour ago - Unit: HOUR, Metric: 1 3 hour ago - Unit: HOURS, Metric: 3 25 hours ago - Unit: DAY, Metric: 1 50 hours ago - Unit:
1 sec ago - Unit: SEC, Metric: 1
20 secs ago - Unit: SECS, Metric: 20
1 hour ago - Unit: HOUR, Metric: 1
3 hour ago - Unit: HOURS, Metric: 3
25 hours ago - Unit: DAY, Metric: 1
50 hours ago - Unit: DAYS, Metric: 2
对于这种方法,我只需要去支持,秒,小时和天。不是几个月。想法?大多数逻辑已经作为Rails的助手: 可能是这样的: 定义单词和单位(从时间到时间=0) from_time=from_time.to_time如果是from_time.response_to?(:to_time) to_time=to_time.to_time如果to_time.response_to?(:to_time) 距离单位为分钟=((到时间-从时间).abs)/60)。整轮 距离(以秒为单位=((到时间-从时间).abs)。四舍五入
结束谢谢,但是如何访问给定此函数的:metric:unit变量?您会得到一个哈希值,比如myvar=words_和_units(Time.now)=>{:metric=>1,:unit=>'SEC'},然后您可以使用myvar[:metric]或myvar[:unit],或者您可以使用一个方便的方法为您提取它,比如def metric(从_Time)words_和_units(from_time)[:metric]结束,把它包得又好又紧
case distance_in_minutes
when 0..1
case distance_in_seconds
when 0..59 then {:metric => distance_in_seconds, :unit => 'SEC'}
else {:metric => 1, :unit => 'MIN'}
end
when 2..44 then {:metric => distance_in_minutes, :unit => 'MIN'}
when 45..89 then {:metric => 1, :unit => 'HOUR'}
when 90..1439 then {:metric => (distance_in_minutes.to_f / 60.0).round, :unit => 'HOUR'}
when 1440..2529 then {:metric => 1, :unit => 'DAY'}
when 2530..43199 then {:metric => (distance_in_minutes.to_f / 1440.0).round, :unit => 'DAY'}
else
raise WayToLongError
end