Ruby - диапазоны дат (с первого числа этого месяца до первого числа следующего месяца) - PullRequest
1 голос
/ 14 марта 2012

Я хочу получить что-то вроде этого:

Например: если первая дата 2012-02-01 (ГГГГ-ММ-ДД), следующая дата должна быть 2012-03-01.Так что увеличивай месяц.Однако, если дата 2012-12-01, следующая дата должна быть 2013-01-01.Мне удалось это сделать, сделав nextMonth=((thisMonth) mod 12)+1 и установив nextYear на thisYear+1, если thisMonth = 12.

. Мой вопрос: можно ли это легко сделать с помощью библиотеки дат?

1 Ответ

3 голосов
/ 14 марта 2012

Вы можете использовать Date # >> :

>> require 'date'
=> true
>> d = Date.new(2012,12,1)
=> #<Date: 2012-12-01 ((2456263j,0s,0n),+0s,2299161j)>
>> d >> 1
=> #<Date: 2013-01-01 ((2456294j,0s,0n),+0s,2299161j)>
>> (d..d>>1)
=> #<Date: 2012-12-01 ((2456263j,0s,0n),+0s,2299161j)>..#<Date: 2013-01-01 ((2456294j,0s,0n),+0s,2299161j)>

Если начальная дата не первая, но вам все еще нужна конечная дата, чтобы быть первой изв следующем месяце вы можете сделать это:

>> d = Date.new(2012,12,12)
=> #<Date: 2012-12-12 ((2456274j,0s,0n),+0s,2299161j)>
>> (d>>1) - (d.mday - 1)
=> #<Date: 2013-01-01 ((2456294j,0s,0n),+0s,2299161j)>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...