這不是一個問題,因爲我注意到的東西,並想知道如果有人能解釋給我。紅寶石日期計算
如果我使用內嵌式語法,我得到兩個不同的,互換,答案:
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