正如你们可能已经猜到的那样,这是一个面试问题。但是我不会透露哪家公司。我被要求实施
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
然后, .ago
从 Time.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
是一天中的秒数。
免责声明:此示例显然不包括日光储蓄时的时间变化。(以自己的危险使用。)