Groovy already adds a lot of extra methods to the Date and Calendar classes. And since Groovy 2.2 we can use the upto() method and loop over a begin date up to another date. We pass a closure that is executed for each day. We can also iterate back using the downto() method.
// We can loop from today
// to nextWeek and invoke a closure for each day.
def today = new Date().clearTime()
def nextWeek = today + 7
today.upto(nextWeek) {
// Print day of the week.
println it.format('EEEE')
}
println()
nextweek.downto(today) {
prinltn it.format('EEEE')
}
When we run the code we get the following output:
Monday Tuesday Wednesday Thursday Friday Saturday Sunday Monday Monday Sunday Saturday Friday Thursday Wednesday Tuesday Monday
In the next sample we use the upto() method on the Calendar class:
// upto() also works on Calendar objects.
def to = Calendar.instance
to.set(year: 2013, month: Calendar.NOVEMBER, date: 18)
def from = Calendar.instance
from.set(year: 2013, month: Calendar.NOVEMBER, date: 13)
from.upto(to) {
if (it[Calendar.DATE] % 2 == 0) {
print 'Even'
} else {
print 'Odd'
}
println ' date'
}
We get the following output:
Odd date Even date Odd date Even date Odd date Even date
Code written with Groovy 2.2.