在Ruby中获取本月的最后一天

我用args(年,月)做了新的对象Date.new。 在创buildruby之后默认为这个对象添加01个天数。 有什么办法可以不添加第一天,但​​是我通过了arg的月份的最后一天(例如,如果是02月28日,如果是01月31日)?

使用Date.civil

使用Date.civil(y, m, d)或其别名.new(y, m, d) ,可以创build一个新的Date对象。 日(d)和月(m)的值可以是负的,在这种情况下,它们分别从年底和月底倒数。

 => Date.civil(2010, 02, -1) => Sun, 28 Feb 2010 >> Date.civil(2010, -1, -5) => Mon, 27 Dec 2010 

为了获得本月的结束,你也可以使用ActiveSupport的助手end_of_month

 # Require extensions explicitly if you are not in a Rails environment require 'active_support/core_ext' p Time.now.utc.end_of_month # => 2013-01-31 23:59:59 UTC p Date.today.end_of_month # => Thu, 31 Jan 2013 

您可以在Rails API文档的end_of_month上find更多信息。

所以我在Google里search同样的东西

我对上述不满意,所以在阅读RUBY-DOC的文档后,我的解决scheme是:

例子得到10/31/2014

Date.new(2014,10,1).next_month.prev_day