我有一个class TimeDuration (gist),我可以处理简单的持续时间。
# Basic work:
ten_hours = TimeDuration.new("10 hours")
# => #<TimeDuration:0x936587c @duration=36000>
Time.now
# => 2013-09-13 09:12:07 +0200
ten_hours + Time.now
# => 2013-09-13 19:12:30 +0200
ten_hours + ten_hours + Time.now
=> 2013-09-14 05:12:44 +0200
但是一个不起作用:(:
Time.now + ten_hours
# TypeError: can't convert TimeDuration into an exact number
# in `+'
有没有办法在TimeDuration中创建一个方法,这有效吗?我不想操纵时间等级:)
谢谢
答案 0 :(得分:1)
添加 - 向时间添加一些秒数(可能是小数)并将该值作为新的Time对象返回。
Time.now + ten_hours
不起作用,因为它需要 numeric 值,而不是对象。在您的情况下,ten_hours
是TimeDuration
类的实例。
以下内容可行:
ten_hours = TimeDuration.new("10 hours")
Time.now + ten_hours.duration
# => 2013-09-13 23:50:35 +0530