繁体   English   中英

从部分字符串中获取红宝石月份的第一天和最后一天

[英]Getting the first and last day of a month in ruby from partial string

我有一个表,其中有一个用于year的列,它是一个integer ,而一个用于month的列,它也是一个integer 我需要(在ruby中)能够以每行的开始start_dateend_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM