从部分字符串中获取ruby中一个月的第一天和最后一天

时间:2016-06-11 19:45:59

标签: ruby-on-rails ruby

我的表格中包含year的列integer,以及month的列,该列也是integer。我需要(在ruby中)能够以每行start_dateend_date结束。

所以从第一行开始,年份是2016年,月份是1,我需要得到start_date = 01/01/2016和结束日期= 31/01/2016。我知道我可以使用begin_of_month和end_of_month将它们添加到ruby中,但我需要先到达日期?

我迷失在Date.parse和Date.strptime中,并且真的可以解释它。据推测,我无法开始约会,因为我实际上没有一天可以合作!

帮助:)

3 个答案:

答案 0 :(得分:3)

既然您已经知道了月份和年份,那么您已经解决了一半的问题,因为每个月都从第1个月开始。

您可以使用它来建立初始日期,然后您可以致电end_of_month为您做繁重的工作。

month = 4
year = 2016    
beginning_of_month = "#{year}-#{month}-01".to_date
end_of_month = beginning_of_month.end_of_month

答案 1 :(得分:3)

您可以简单地将日期解析为该月的第一天:

 year = 2016
 month = 6
 d = Date.parse("#{year}-#{month}-01")
 # => Wed, 01 Jun 2016

然后使用end_of_month方法计算最后一天,就像您提议的那样:

 d.end_of_month
 # => Thu, 30 Jun 2016

答案 2 :(得分:3)

require "date"
year_months = [[2016, 5], [2015, 6]]

dates = year_months.map do |y, m|
  [Date.new(y, m, 1), Date.new(y, m, -1)] # -1 is last day of month
end