どう書く?にうるう年か調べるやつを投稿してみた。理屈の部分は、C#の投稿から借りてきて、groovyに置き換えて投稿してみたけど、groovyなら、Dateクラスに拡張してしまうほうが、すっきりするような気がする。

Date.metaClass.define{
    isLeapYear{
        y = year+1900
         ((y & 3) == 0) && (!("$y" ==~ /.*00$/) || ((y & 15) == 0))
    }
}

println new Date("1900/1/1").isLeapYear()
println new Date("2000/1/1").isLeapYear()
println new Date("2008/1/1").isLeapYear()
println new Date("2009/1/1").isLeapYear()
println new Date("2100/1/1").isLeapYear()