我需要从今天开始生成下个月的日期。我应该手动检查月份== 12并在d.year上添加+1,还是有简单的解决方案? 时间课做了奇怪的数学:
>> d = Time.now
=> 2015-12-03 15:15:36 +0300
>> d.month
=> 12
>> d.month.next
=> 13
答案 0 :(得分:6)
Date
有一个方法next_month
:
require 'date'
Date.today #=> #<Date: 2015-12-03 ((2457360j,0s,0n),+0s,2299161j)>
Date.today.next_month #=> #<Date: 2016-01-03 ((2457391j,0s,0n),+0s,2299161j)>
Date.today.next_month.month #=> 1
要将Time
个实例转换为Date
,请使用to_date
。
答案 1 :(得分:1)
是添加+ 1 但是(本月+ 1)%12
if ( thisMonth == 12)
nextMonth = 1;
else
nextMonth = thisMonth+1;
这只是为了提出一个想法 我没有看到任何边缘情况
答案 2 :(得分:0)
有两种常用的解决方案:
1:Date.today+1.month
或仅限月份(Date.today+1.month).month
2:Date.today.next_month
或仅限月份Date.today.next_month.month