这不是一个问题,因为我注意到的东西,并想知道如果有人能解释给我。红宝石日期计算
如果我使用内嵌式语法,我得到两个不同的,互换,答案:
irb(main):017:0> d = (Date.today >> 3) - (d.day + 1)
=> #<Date: 2013-06-01 ((2456445j,0s,0n),+0s,2299161j)>
irb(main):018:0> d = (Date.today >> 3) - (d.day + 1)
=> #<Date: 2013-06-03 ((2456447j,0s,0n),+0s,2299161j)>
irb(main):019:0> d = (Date.today >> 3) - (d.day + 1)
=> #<Date: 2013-06-01 ((2456445j,0s,0n),+0s,2299161j)>
irb(main):020:0> d = (Date.today >> 3) - (d.day + 1)
=> #<Date: 2013-06-03 ((2456447j,0s,0n),+0s,2299161j)>
如果我做同样的多条线路上我每次都得到相同的正确答案:
irb(main):025:0> d = Date.today
=> #<Date: 2013-03-05 ((2456357j,0s,0n),+0s,2299161j)>
irb(main):026:0> d = d >> 3
=> #<Date: 2013-06-05 ((2456449j,0s,0n),+0s,2299161j)>
irb(main):027:0> d = d - d.day + 1
=> #<Date: 2013-06-01 ((2456445j,0s,0n),+0s,2299161j)>
irb(main):028:0> d = Date.today
=> #<Date: 2013-03-05 ((2456357j,0s,0n),+0s,2299161j)>
irb(main):029:0> d = d >> 3
=> #<Date: 2013-06-05 ((2456449j,0s,0n),+0s,2299161j)>
irb(main):030:0> d = d - d.day + 1
=> #<Date: 2013-06-01 ((2456445j,0s,0n),+0s,2299161j)>
任何想法为什么会发生?我只是有兴趣了解,因为,我看到它的方式,两种方式应该总是返回相同的答案。
好吧,我明白了,但为什么然后它会每隔一段时间才能正确返回? – engineersmnky 2013-03-05 15:10:42
由于您在公式中输入了(1和3)的具体数字,所以它可以正确返回。其他如此处理的数字和公式可能需要更长时间才能重复,甚至可能表现混乱。 – 2013-03-05 15:22:19
假设陈述16是类似于d = Date.today的东西,一般而言,您的公式将在该月的第一天+3(即三月的六月)和第二天的(今天-2)之间交替出现月。将(d.day + 1)更改为(d.day + 11)以获得更有趣的混沌行为。 。 。 – 2013-03-05 15:31:07