我的表格中包含year
的列integer
,以及month
的列,该列也是integer
。我需要(在ruby中)能够以每行start_date
和end_date
结束。
所以从第一行开始,年份是2016年,月份是1,我需要得到start_date = 01/01/2016和结束日期= 31/01/2016。我知道我可以使用begin_of_month和end_of_month将它们添加到ruby中,但我需要先到达日期?
我迷失在Date.parse和Date.strptime中,并且真的可以解释它。据推测,我无法开始约会,因为我实际上没有一天可以合作!
帮助:)
答案 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