我正在用一些动态的月份更改DateTime的月份。
我使用了DateTime.now.change(month: month)
仅在月份值来自[1,3,5,7,8,10,12]时才有效
当我尝试使用[2,4,6,9,11]时,它会返回ArgumentError: invalid date
错误
irb(main):073:0> DateTime.now.change(month: 1)
=> Sat, 31 Jan 2015 19:59:28 +0530
irb(main):075:0> DateTime.now.change(month: 3)
=> Tue, 31 Mar 2015 19:59:33 +0530
irb(main):077:0> DateTime.now.change(month: 5)
=> Sun, 31 May 2015 19:59:39 +0530
irb(main):079:0> DateTime.now.change(month: 7)
=> Fri, 31 Jul 2015 19:59:44 +0530
irb(main):080:0> DateTime.now.change(month: 8)
=> Mon, 31 Aug 2015 19:59:48 +0530
irb(main):082:0> DateTime.now.change(month: 10)
=> Sat, 31 Oct 2015 19:59:54 +0530
irb(main):084:0> DateTime.now.change(month: 12)
=> Thu, 31 Dec 2015 20:00:00 +0530
irb(main):074:0> DateTime.now.change(month: 2)
irb(main):076:0> DateTime.now.change(month: 4)
irb(main):078:0> DateTime.now.change(month: 6)
irb(main):081:0> DateTime.now.change(month: 9)
irb(main):083:0> DateTime.now.change(month: 11)
ArgumentError: invalid date
from /home/kiprosh/.rvm/gems/ruby-2.1.2/gems/activesupport-3.2.18/lib/active_support/core_ext/date_time/calculations.rb:35:in `civil'
from /home/kiprosh/.rvm/gems/ruby-2.1.2/gems/activesupport-3.2.18/lib/active_support/core_ext/date_time/calculations.rb:35:in `change'
from (irb):76
from /home/kiprosh/.rvm/gems/ruby-2.1.2/gems/railties-3.2.18/lib/rails/commands/console.rb:47:in `start'
from /home/kiprosh/.rvm/gems/ruby-2.1.2/gems/railties-3.2.18/lib/rails/commands/console.rb:8:in `start'
from /home/kiprosh/.rvm/gems/ruby-2.1.2/gems/railties-3.2.18/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
为什么它不是[2,4,6,9,11]的月工作价值?
答案 0 :(得分:5)
因为now()
是2015-08-31
。没有工作的月份不会有31天。