对ruby不熟悉,并且遇到一些日期函数问题。我正在尝试将日历月添加到提供的日期,以便“2002年4月30日”输出“2002年5月31日”。这是我的代码
date = '30th Apr 2002'
parseDate = Date.parse(date)
(parseDate >> 1) # This returns 2002-05-30
也许这不是函数应该如何工作,在这种情况下,如果提供的日期是该月的最后一天,我需要编写一些代码来返回下个月的最后一天?
感谢任何帮助。
答案 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)