在Ruby中获取本月的最后一天
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Ruby中获取本月的最后一天相关的知识,希望对你有一定的参考价值。
我用args(年,月)创建了新对象Date.new。创建ruby后,默认情况下为此对象添加01天。有没有办法添加不是第一天,而是我作为arg传递的月份的最后一天(例如28如果它将是02个月或31如果它将是01个月)?
答案
使用Date.civil
使用Date.civil(y, m, d)
或其别名.new(y, m, d)
,您可以创建一个新的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的更多信息。
另一答案
所以我在Google搜索同样的东西......
我对上面不满意,所以我在阅读RUBY-DOC文档后的解决方案是:
获得10/31/2014
的示例
Date.new(2014,10,1).next_month.prev_day
另一答案
这是我基于Time
的解决方案。与Date
相比,我个人偏爱它,尽管上面提出的Date
解决方案在某种程度上更好。
reference_time ||= Time.now
return (Time.new(reference_time.year, reference_time.month + 1) - 1).day
另一答案
require "date"
def find_last_day_of_month(_date)
if(_date.instance_of? String)
@end_of_the_month = Date.parse(_date.next_month.strftime("%Y-%m-01")) - 1
else if(_date.instance_of? Date)
@end_of_the_month = _date.next_month.strftime("%Y-%m-01") - 1
end
return @end_of_the_month
end
find_last_day_of_month("2018-01-01")
这是另一种寻找方式
以上是关于在Ruby中获取本月的最后一天的主要内容,如果未能解决你的问题,请参考以下文章