[英]Getting the first and last day of a month in ruby from partial string
我有一个表,其中有一个用于year
的列,它是一个integer
,而一个用于month
的列,它也是一个integer
。 我需要(在ruby中)能够以每行的开始start_date
和end_date
。
因此,从第一行开始,这里的年份是2016,月份是1,我需要获取start_date = 01/01/2016和结束日期= 31/01/2016。 我知道我可以使用Beginning_of_month和end_of_month在红宝石中使用它们,但是我需要先确定日期?
我在Date.parse和Date.strptime中迷路了,真的可以和解释它的人一起做。 大概我没有约会的开始,因为我实际上没有一天可以工作!
救命 :)
由于您已经知道月份和年份,因此您已经解决了一半的问题,因为每个月都从第一天开始。
您可以使用它来建立初始日期,然后可以调用end_of_month
为您完成繁重的工作。
month = 4
year = 2016
beginning_of_month = "#{year}-#{month}-01".to_date
end_of_month = beginning_of_month.end_of_month
您可以简单地将日期解析为好像是该月的第一天:
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
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.