saba1024のブログ

どうでも良い思いついた事とかプログラミング関係のメモとか書いていきます。

Groovyでお手軽にカレンダーを生成する

Groovyだと、2つの日付同士のレンジが..で生成できるので非常にお手軽にカレンダーを生成することが出来ます。
うるう年もちゃんと考慮されるので、例えば以下のようなことが出来ます。

String df = "yyyy/MM/dd"

// うるう年のある年
Date date1 = Date.parse(df, "2016/01/01")
Date date2 = Date.parse(df, "2016/12/31")

assert (date1..date2).size() == 366
List<Date> february2016 = (date1..date2).findAll {it.getAt(Calendar.MONTH) == 1}
assert february2016.size() == 29
assert february2016.last() == Date.parse(df, "2016/02/29")

// うるう年の無い年
Date date3 = Date.parse(df, "2017/01/01")
Date date4 = Date.parse(df, "2017/12/31")

assert (date3..date4).size() == 365
List<Date> february2017 = (date3..date4).findAll {it.getAt(Calendar.MONTH) == 1}
assert february2017.size() == 28
assert february2017.last() == Date.parse(df, "2017/02/28")

非常にお手軽ですね!