您如何在Ruby实施1.Day.go



正如你们可能已经猜到的那样,这是一个面试问题。但是我不会透露哪家公司。我被要求实施

1.day.ago

在红宝石中。这是导轨中的日期助手,但Ruby中不存在此功能。

它所做的一切都是返回一天中的秒数,乘以自我:

class Fixnum
  def day
    self * (60 * 60 * 24) # seconds * minutes * hours
  end
end

# 10.days => 'self' is 10, so 10 * 60 * 60 * 24

然后, .agoTime.now中减去了很多秒:

class Fixnum
  def ago
    Time.now - self
  end
end
# 10.days.ago == Time.now - (10 * 60 * 60 * 24) 

*这实际上是不是所做的;实际上,它返回代表给定持续时间的代理对象。该数学也更为复杂

这是一种方法:

Time.now-86400
#=> 2014-01-26 16:54:07 -0500

86400是一天中的秒数。

免责声明:此示例显然不包括日光储蓄时的时间变化。(以自己的危险使用。)

最新更新