Groovy - идиоматический способ кодирования Последний день недели - Первый месяц - PullRequest
2 голосов
/ 30 июня 2011

Что такое Groovy идиоматический способ просить последний прошедший будний день (например, понедельник)?(или текущая неделя, первый день недели)?

Также есть что-то похожее для запроса текущего месяца, первого месяца?

Ответы [ 3 ]

3 голосов
/ 01 июля 2011
static Date firstDayInWeek(Date day) {
    day.clearTime()
    return day - day.calendarDate.dayOfWeek
}
3 голосов
/ 01 июля 2011

Год назад я написал простой DSL для вычисления дат , это позволяет вам:

def mondayInJuly = new DateDSL().with {
  first.monday.in.july( 2011 )
}

, который устанавливает mondayInJuly как объект Date, представляющий

Mon Jul 04 00:00:00 UTC 2011

Мне нужно обновить скрипт, чтобы позволить вам использовать более мягкий анализатор Groovy 1.8

1 голос
/ 01 июля 2011

Как вы упоминаете DateTime в тегах, я предлагаю JodaTime в порядке.Итак, мы делаем:

def lastMonday = 
  new DateTime().withDayOfWeek(DateTimeConstants.MONDAY).minusWeeks(1)
def firstThisMoth = new DateTime().withDayOfMonth(1)
...