在Ruby表达式中' - '后留空的效果

Ste*_*son 6 ruby math ruby-on-rails date

今天我在Rails控制台上尝试了一些事情,这发生了,

2.0.0p247 :009 > Date.today -29.days
 => Fri, 07 Feb 2014 
2.0.0p247 :010 > Date.today - 29.days
 => Thu, 09 Jan 2014 
Run Code Online (Sandbox Code Playgroud)

我很困惑.我可以看到我遗漏了一些基本的东西.但它只是引起我的注意!任何人都可以解释为什么会这样吗?

Mis*_*cha 4

实际发生的情况是这样的:

Date.today(-29.days) # => Fri, 07 Feb 2014
Run Code Online (Sandbox Code Playgroud)

today有一个名为 的可选参数start,默认为Date::ITALY

可选参数日历改革(开始)的日期作为儒略日数字,应为 2298874 到 2426355 或 -/+oo。默认值为 Date::ITALY (2299161=1582-10-15)。

传给-29.days显然today没有效果。

然而:

Date.today + -29.days # => Thu, 09 Jan 2014
Run Code Online (Sandbox Code Playgroud)

这与以下内容相同:

Date.today - 29.days # => Thu, 09 Jan 2014
Run Code Online (Sandbox Code Playgroud)