我是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)
也许这不是函数应该如何工作,在这种情况下,如果提供的日期是该月的最后一天,我需要编写一些代码来返回下个月的最后一天?
任何帮助将不胜感激.
这>>只会增加月份并在一个月内保持同一天,正如Skeet在评论中指出的那样有点明智......
但是为了获得您想要的行为,您只需按正确的顺序添加和减去一天,即可跨越月边界的最后一天并返回:
((parseDate +1) >> 1) - 1
Run Code Online (Sandbox Code Playgroud)
对于减去月数,从你真正想要的评论中看出,使用相同的技巧,但反向月份运算符.
((parseDate +1) << 1) - 1
Run Code Online (Sandbox Code Playgroud)
积极支持
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)