Groovy Goodness: Loop Through Date and Calendar Ranges
Join the DZone community and get the full member experience.
Join For FreeGroovy 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.
Published at DZone with permission of Hubert Klein Ikkink, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Trending
-
Competing Consumers With Spring Boot and Hazelcast
-
Extending Java APIs: Add Missing Features Without the Hassle
-
Transactional Outbox Patterns Step by Step With Spring and Kotlin
-
Essential Architecture Framework: In the World of Overengineering, Being Essential Is the Answer
Comments