Ruby添加一个日历月

nam*_*tax 6 ruby date

我是ruby的新手,并且遇到了一些日期函数的问题.我正在尝试将日历月添加到提供的日期,以便"2002年4月30日"输出"2002年5月31日".这是我的代码

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

(parseDate >> 1) # This returns 2002-05-30
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将不胜感激.

Don*_*oby 6

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

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

((parseDate +1) >> 1) - 1
Run Code Online (Sandbox Code Playgroud)

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

((parseDate +1) << 1) - 1
Run Code Online (Sandbox Code Playgroud)


Jos*_*ech 0

积极支持

parseDate = parseDate + 1.month.since(parseDate)
Run Code Online (Sandbox Code Playgroud)

或者正好是 30 天,所以可能会稍微下滑

parseDate = parseDate + (30*24*60*60)
Run Code Online (Sandbox Code Playgroud)