如何在TimeDuration中添加Time可以处理它的方法?

时间:2013-09-13 07:18:35

标签: ruby

我有一个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中创建一个方法,这有效吗?我不想操纵时间等级:)

谢谢

1 个答案:

答案 0 :(得分:1)

time + numeric → time

  

添加 - 向时间添加一些秒数(可能是小数)并将该值作为新的Time对象返回。

Time.now + ten_hours不起作用,因为它需要 numeric 值,而不是对象。在您的情况下,ten_hoursTimeDuration类的实例。

以下内容可行:

ten_hours = TimeDuration.new("10 hours")
Time.now + ten_hours.duration
# => 2013-09-13 23:50:35 +0530