Определите, закончился ли месяц в Groovy - PullRequest
2 голосов
/ 27 октября 2010

Я пытаюсь найти наилучший способ определить, составляет ли данная дата 10 дней или менее с конца месяца. Я в основном строю функциональность, которая будет отображать сообщение, если месяц почти закончился. Спасибо!

Ответы [ 5 ]

2 голосов
/ 27 октября 2010

Альтернативой будет что-то вроде:

def isEndOfMonth() {
  Calendar.instance.with {
    it[ DAY_OF_MONTH ] + 10 > getActualMaximum( DAY_OF_MONTH )
  }
}
1 голос
/ 28 октября 2010

Проверьте страницу Groovy Date .

boolean isLessThanNDaysFromEndOfMonth(Date d, int n) {
  return (d + n).month != d.month
} 
1 голос
/ 27 октября 2010

Как насчет

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, поэтому я мог ошибиться с синтаксисом, но концепция должна быть в порядке.

0 голосов
/ 28 октября 2010

Библиотека Joda Time заслуживает изучения. Автор Joda time - ведущий спецификаций JSR-310 , цель которого - предоставить Java 7 альтернативу "старым" классам Calendar / Date.

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"
}
0 голосов
/ 27 октября 2010

Предложение Майкла Резерфурда озвучено:

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

new Date().isEndOfMonth()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...