Ruby添加一个日历月

时间:2011-11-07 10:53:14

标签: ruby date

对ruby不熟悉,并且遇到一些日期函数问题。我正在尝试将日历月添加到提供的日期,以便“2002年4月30日”输出“2002年5月31日”。这是我的代码

 date = '30th Apr 2002'
 parseDate = Date.parse(date)

(parseDate >> 1) # This returns 2002-05-30

也许这不是函数应该如何工作,在这种情况下,如果提供的日期是该月的最后一天,我需要编写一些代码来返回下个月的最后一天?

感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

>>只会增加月份,并在一个月内保持同一天,正如Skeet在评论中指出的那样有点明智......

但是要获得您想要的行为,您只需按正确的顺序添加和减去一天,即可跨越月边界的最后一天,然后返回:

((parseDate +1) >> 1) - 1

对于减去月数,从你真正想要的评论中看出,使用相同的技巧,但反向月份运算符。

((parseDate +1) << 1) - 1

答案 1 :(得分:0)

with activesupport

parseDate = parseDate + 1.month.since(parseDate)
确切地说,还是30天,所以它可能会滑落一点

parseDate = parseDate + (30*24*60*60)