确定Groovy中的月份是否几乎结束

时间:2010-10-27 00:12:16

标签: grails groovy

我试图找出确定给定日期是否从月末起10天或更短的最佳方法。我基本上构建的功能将在月份快结束时显示消息。谢谢!

5 个答案:

答案 0 :(得分:2)

另一种选择是:

def isEndOfMonth() {
  Calendar.instance.with {
    it[ DAY_OF_MONTH ] + 10 > getActualMaximum( DAY_OF_MONTH )
  }
}

答案 1 :(得分:1)

怎么样?
def date = new Date();

// ten days is in the next month so we are near end of month
if ((date + 10).month != date.month) { 
    // write message
}

我是groovy的新手所以我可能在语法上犯了一个错误,但概念应该没问题。

答案 2 :(得分:1)

查看Groovy Date Page

boolean isLessThanNDaysFromEndOfMonth(Date d, int n) {
  return (d + n).month != d.month
} 

答案 3 :(得分:0)

Michael Rutherfurd的建议groovyfied:

Date.metaClass.isEndOfMonth = { 
    (delegate+10).month != delegate.month
}

new Date().isEndOfMonth()

答案 4 :(得分:0)

Joda Time库非常值得探索。 Joda时间的作者是JSR-310的规范主角,旨在提供Java 7替代“旧”日历/日期类。

import org.joda.time.*

@Grapes([
    @Grab(group='joda-time', module='joda-time', version='1.6.2')
])

DateTime now = new DateTime()
DateTime monthEnd = now.monthOfYear().roundCeilingCopy()
Days tendays = Days.days(10)

if (Days.daysBetween(now, monthEnd).isLessThan(tendays)) {
    println "Month is nearly over"
}
else {
    println "Plenty of time left"
}