10 月 30 号下一个月的上一个月,是哪天?
10 月 31 号下一个月的上一个月,是哪天?
我遇到了一个 bug,产生的原因就是这个。代码不是我写的,我就是个修 bug 的。
首先觉得挺有趣的,之前也没注意到,所以就发了出来。
觉得,多读读文档,不想当然没有坏处。程序员要注意细节,多写测试(代码不是我写的,但发现这个 bug 的测试是我写的)。
2.3.0 :013 > day = Date.parse("20171030")
=> #<Date: 2017-10-30 ((2458057j,0s,0n),+0s,2299161j)>
2.3.0 :014 > day.next_month
=> #<Date: 2017-11-30 ((2458088j,0s,0n),+0s,2299161j)>
2.3.0 :015 > day.next_month.prev_month
=> #<Date: 2017-10-30 ((2458057j,0s,0n),+0s,2299161j)>
2.3.0 :016 > day2 = Date.parse("20171031")
=> #<Date: 2017-10-31 ((2458058j,0s,0n),+0s,2299161j)>
2.3.0 :017 > day.next_month.prev_month
=> #<Date: 2017-10-30 ((2458057j,0s,0n),+0s,2299161j)>
31 号神 TM 30 号啊
# Returns a date object pointing n months after self. The argument n should be a numeric value.
Date.new(2001,2,3) >> 1 #=> #<Date: 2001-03-03 ...>
Date.new(2001,2,3) >> -2 #=> #<Date: 2000-12-03 ...>
#When the same day does not exist for the corresponding month, the last day of the month is used instead:
Date.new(2001,1,28) >> 1 #=> #<Date: 2001-02-28 ...>
Date.new(2001,1,31) >> 1 #=> #<Date: 2001-02-28 ...>
#This also results in the following, possibly unexpected, behavior:
Date.new(2001,1,31) >> 2 #=> #<Date: 2001-03-31 ...>
Date.new(2001,1,31) >> 1 >> 1 #=> #<Date: 2001-03-28 ...>
Date.new(2001,1,31) >> 1 >> -1 #=> #<Date: 2001-01-28 ...>
赶紧看了一下文档,说的还是很清楚的
张口就这么称呼,似乎不礼貌吧?
bug 就出在这。没什么无聊不无聊的,有 bug 修 bug,修完 bug,拿出来乐一乐,也许有人碰到,就能省点时间,就算没有,多知道一点我没觉得哪不好。
多我来说,程序员就是要解决问题的,既然问题是要解决的,就无所谓问题大小。