我的日期范围如下
from = Date.parse('05.01.2017')
to = Date.parse('10.03.2018')
我想按以下方式将日期范围划分为30天。我想包括“从”和“至今”。
我找到了这个参考文献link。但是我没有找到迄今为止的答复。我该怎么办?
预期输出:
05.01.2017 - 03.02.2017
04.02.2017 - 05.03.2017
06.03.2017 - 04.04.2017
...
07.02.2018 - 10.03.2018
答案 0 :(得分:1)
from = Date.parse('05.01.2017')
to = Date.parse('10.03.2018')
s = from
e = s + 29
begin
puts "#{s.strftime('%d.%m.%Y')} - #{e.strftime('%d.%m.%Y')}"
s = e + 1
e = (s + 29 < to ) ? s + 29 : to
end while (s < to)
输出:
05.01.2017 - 03.02.2017 # 30 days
04.02.2017 - 05.03.2017 # 30 days
06.03.2017 - 04.04.2017 # 30 days
05.04.2017 - 04.05.2017 # 30 days
05.05.2017 - 03.06.2017 # 30 days
04.06.2017 - 03.07.2017 # 30 days
04.07.2017 - 02.08.2017 # 30 days
03.08.2017 - 01.09.2017 # 30 days
02.09.2017 - 01.10.2017 # 30 days
02.10.2017 - 31.10.2017 # 30 days
01.11.2017 - 30.11.2017 # 30 days
01.12.2017 - 30.12.2017 # 30 days
31.12.2017 - 29.01.2018 # 30 days
30.01.2018 - 28.02.2018 # 30 days
01.03.2018 - 10.03.2018 # remaining days till to (10.03.2018)
注意:01.03.2018 - 10.03.2018
不是30天范围。但根据OP的评论,我显示的日期一直到to
答案 1 :(得分:1)
require "date"
from = Date.parse('05.01.2017')
to = Date.parse('10.03.2018')
first = from.jd
(from..to)
.chunk{|date| (date.jd - first) / 30}
.map{|_, (first, *, last)|
"#{first.strftime("%d.%m.%Y")} - #{last.strftime("%d.%m.%Y")}"
}
输出:
05.01.2017 - 03.02.2017
04.02.2017 - 05.03.2017
06.03.2017 - 04.04.2017
05.04.2017 - 04.05.2017
05.05.2017 - 03.06.2017
04.06.2017 - 03.07.2017
04.07.2017 - 02.08.2017
03.08.2017 - 01.09.2017
02.09.2017 - 01.10.2017
02.10.2017 - 31.10.2017
01.11.2017 - 30.11.2017
01.12.2017 - 30.12.2017
31.12.2017 - 29.01.2018
30.01.2018 - 28.02.2018
01.03.2018 - 10.03.2018