一个月前得到,但总是在一个月的第15个月

时间:2014-03-11 17:00:16

标签: ruby-on-rails ruby

我需要在今天之前获得一个月,但总是以15日结束日期。

即如果今天是2014年3月11日,我需要=> 2014年2月15日。

或者如果日期是2014年3月28日,我需要=> 2014年2月15日。

我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:3)

因为您正在使用rails:

(DateTime.now - 1.month).beginning_of_month + 14.days

有关详细信息,请参阅DateTime documentation

修改:已更新,以反映上个月的第15天。

答案 1 :(得分:2)

(Date.today - 1.month).beginning_of_month + 14

或其他方式

(Date.today - 1.month).change(day: 15)

答案 2 :(得分:1)

你可以创建一个新的日期对象,其中包含上个月的年份和月份数字以及15个日期:

today         = Date.today
one_month_ago = (today - 1.month)

Date.civil(one_month_ago.year, one_month_ago.month, 15)

答案 3 :(得分:1)

这样做:

Date.today.prev_month.beginning_of_month + 14 # => Sat, 15 Feb 2014

答案 4 :(得分:1)

使用

(Date.today<<1).beginning_of_month + 14        ##  => Sat, 15 Feb 2014 

或者

Date.today.last_month.beginning_of_month + 14  ##  => Sat, 15 Feb 2014