Как получить сегодняшний день предыдущего месяца в рубине? - PullRequest
4 голосов
/ 10 мая 2010

Есть ли встроенная функция для получения дня в прошлом месяце, такая же, как сегодня? Примеры:

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

Спасибо! * * 1004

Ответы [ 5 ]

11 голосов
/ 10 мая 2010

Вы можете вычесть целые месяцы с помощью <<.

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

Подробнее

3 голосов
/ 12 декабря 2012

Вы можете сделать это:

(Date.today - 1.month).strftime("%Y/%m/%d")
3 голосов
/ 01 ноября 2012

Вы можете попробовать использовать

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

1 голос
/ 10 мая 2010

Например, вы можете создать объект времени

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)

Однако, как указала децезе, каков критерий для 31.05 стать 4/30? В irb 4/31 «переполняется» до 5/01.

0 голосов
/ 10 мая 2010

Ruby's класс дат позволяет добавлять, вычитать дни из определенной даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...