如何使用Time从今天开始下个月的日期

时间:2015-12-03 12:27:26

标签: ruby

我需要从今天开始生成下个月的日期。我应该手动检查月份== 12并在d.year上添加+1,还是有简单的解决方案? 时间课做了奇怪的数学:

>> d = Time.now
=> 2015-12-03 15:15:36 +0300 
>> d.month
=> 12
>> d.month.next
=> 13

3 个答案:

答案 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