ArgumentError:无效日期DateTime.now()。change()表示2,4,6,9,1

时间:2015-08-31 15:01:17

标签: ruby datetime

我正在用一些动态的月份更改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]的月工作价值?

1 个答案:

答案 0 :(得分:5)

因为now()2015-08-31。没有工作的月份不会有31天。