想象一下它是1月19日。如果你今天看这个问题,这并不难。
Date.today
=> Thu, 19 Jan 2012 # as expected
Date.today + 1
=> Fri, 20 Jan 2012 # as expected
Date.today+1
=> Fri, 20 Jan 2012 # as expected
Date.today +1
=> Thu, 19 Jan 2012 # ?!
我在这里缺少什么?
答案 0 :(得分:17)
区别在于:
Date.today + 1
是两个数值的加法和
Date.today +1
调用方法today
,参数sg
(日历改革日),其值为+1
检查此问题的最佳方法是使用包含调试输出的原始方法进行修补。请参阅此脚本作为示例:
require 'date'
class Date
def self.today(sg=ITALY)
puts "ITALY default("+sg.to_s+")" if sg==ITALY
puts sg unless sg==ITALY
jd = civil_to_jd(*(Time.now.to_a[3..5].reverse << sg))
new0(jd_to_ajd(jd, 0, 0), 0, sg)
end
end
puts "- Addition:"
Date.today + 1
puts "- Parameter:"
Date.today +1
这将打印以下控制台输出:
- Addition:
ITALY default(2299161)
- Parameter:
1
答案 1 :(得分:4)
是的,空白在中在Ruby中很重要,这与普遍看法相反。例如,foo bar
与foobar
不同。
在这种特殊情况下,
Date.today + 1
与
相同Date.today().+(1)
尽管
Date.today +1
与
相同Date.today(+1)
与
相同Date.today(1.+@())