/**
* @author Alan Rodrigues
* @param java.util.Date - O dia da semana ao qual devemos nos basear
* @return java.util.Map
* key: String monday - value: Date - o primeiro dia daquela semana
* key: String sunday - value: Date - o último dia daquela semana
*/
Map criarSemanaDoDia(Date dia) {
if(!dia) {
dia = new Date()
}
def monday = dia
def sunday = dia
use(groovy.time.TimeCategory) {
// andamos pra trás até chegar em uma segunda-feira
while(monday[Calendar.DAY_OF_WEEK] != Calendar.MONDAY) {
monday = monday - 1.days
}
monday = monday.clearTime() // zera o horário
// andamos pra frente até chegar em um domingo
while(sunday[Calendar.DAY_OF_WEEK] != Calendar.SUNDAY) {
sunday = sunday + 1.days
}
sunday = sunday.clearTime()
sunday = sunday + 23.hours + 59.minutes + 59.seconds
}
[monday: monday, sunday: sunday]
}
resolvemos esse problema de forma simples e clara com poucas linhas de código.