nop*_*ole 23 ruby time datetime
Ruby可以做这样的事吗?
irb(main):001:0> start = Time.now
=> Thu Nov 05 01:02:54 -0800 2009
irb(main):002:0> Time.now - start
=> 25.239
irb(main):003:0> (Time.now - start).duration
=> "25 seconds"
Run Code Online (Sandbox Code Playgroud)
(持续时间方法现在不存在)......同样,报告
23 minutes and 35 seconds
1 hour and 33 minutes
2 days and 3 hours
Run Code Online (Sandbox Code Playgroud)
(报告整个持续时间,最多可报告多少秒,或报告最多2个数字和单位(如果报告日期和小时,则无需告知多少分钟))
Mic*_*rds 37
这是实现此目的的一种快速而简单的方法.设置秒,分钟,小时和天的预定义测量值.然后根据数字的大小,输出与这些单位相应的字符串.我们将扩展Numeric,这样就可以调用该方法上的任何数字类(Fixnum,Bignum或在您的案件Float).
class Numeric
def duration
secs = self.to_int
mins = secs / 60
hours = mins / 60
days = hours / 24
if days > 0
"#{days} days and #{hours % 24} hours"
elsif hours > 0
"#{hours} hours and #{mins % 60} minutes"
elsif mins > 0
"#{mins} minutes and #{secs % 60} seconds"
elsif secs >= 0
"#{secs} seconds"
end
end
end
Run Code Online (Sandbox Code Playgroud)