Groovy - 惯用的编码方式The Last Weekday - First of Month

时间:2011-06-30 17:05:49

标签: datetime groovy calendar idiomatic

Groovy惯用法要求上周最后一个工作日(例如星期一)是什么? (或当前一周,一周的第一天)?

还有类似的问题要求当月,即月份的第一个月吗?

3 个答案:

答案 0 :(得分:3)

一年前,我写了simple DSL for calculating dates,这可以让你做到:

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

mondayInJuly设置为表示

的Date对象
Mon Jul 04 00:00:00 UTC 2011

我需要更新脚本以允许您使用Groovy 1.8更宽松的解析器

答案 1 :(得分:3)

static Date firstDayInWeek(Date day) {
    day.clearTime()
    return day - day.calendarDate.dayOfWeek
}

答案 2 :(得分:1)

当你在标签中提到DateTime时,我建议JodaTime没问题。所以,我们这样做:

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