瞎扯淡 10 月 30 号下一个月是哪天?10 月 30 号下一个月上一个月是哪天?

yfractal · 2017年11月01日 · 最后由 yfractal 回复于 2017年12月21日 · 928 次阅读

10 月 30 号下一个月的上一个月,是哪天?

10 月 31 号下一个月的上一个月,是哪天?

我遇到了一个 bug ,产生的原因就是这个。代码不是我写的,我就是个修 bug 的。

首先觉得挺有趣的,之前也没注意到,所以就发了出来。

觉得,多读读文档,不想当然没有坏处。程序员要注意细节,多写测试(代码不是我写的,但发现这个 bug 的测试是我写的)。

共收到 9 条回复

你这个真的是瞎扯谈吧,下个月的上个月,然后问哪天,是几个意思?😂

jesktop 回复

哈哈哈,肯定是有原因啊。你可以试试啊。

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号啊

kai209209 回复

不合乎直觉,但却是正确的。

# 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 ...>

😂 赶紧看了一下文档,说的还是很清楚的

小朋友真无聊

sefier 回复

张口就这么称呼,似乎不礼貌吧?

bug 就出在这。没什么无聊不无聊的,有 bug 修 bug,修完 bug ,拿出来乐一乐,也许有人碰到,就能省点时间,就算没有,多知道一点我没觉得哪不好。

多我来说,程序员就是要解决问题的,既然问题是要解决的,就无所谓问题大小。

我生日耶

ShiningRay 回复

哈哈哈,为了修这个 bug ,修了小半个下午。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册