如何在红宝石中获得上个月的今天?

时间:2010-05-10 03:22:28

标签: ruby

上个月是否有内置功能,与今天相同?例子:

2010/05/02 -> 2010/04/02
2010/05/15 -> 2010/04/15
2010/05/31 -> 2010/04/30

谢谢!

5 个答案:

答案 0 :(得分:11)

您可以使用<<减去整个月份。

>> d = Date.parse('2010-05-31')
=> #<Date: 4910695/2,0,2299161>
>> d.to_s
=> "2010-05-31"
>> (d<<1).to_s
=> "2010-04-30"

More info

答案 1 :(得分:3)

您可以尝试使用

Time.parse('2010/05/31').months_since(-1)

答案 2 :(得分:3)

你可以这样做:

(Date.today - 1.month).strftime("%Y/%m/%d")

答案 3 :(得分:1)

例如,你可以制作一个时间对象

old_time = Time.now

然后根据

创建一个新的时间对象
new_time = Time.local(old_time.year, (old_time.month - 1), old_time.day, old_time.hour, old_time.min, old_time.sec)

然而,正如deceze指出的那样,5/31成为4/30的标准是什么? 在irb,4/31'溢出'到5/01。

答案 4 :(得分:0)

Ruby date class允许您添加,减去特定日期的天数。