2010-10-27 3 views
2

J'essaie de trouver le meilleur moyen de déterminer si une date donnée est 10 jours ou moins de la fin du mois. Je suis en train de construire des fonctionnalités qui afficheront un message si le mois est presque fini. Merci!Déterminer si le mois est presque fini dans Groovy

+0

Je suppose que je pouvais faire: def c = new GregorianCalendar() si (c.get (Calendar.DAY_OF_MONTH)> 20) ' – RyanLynch

+0

Calendar.instance [Calendar.DAY_OF_MONTH]> 20' serait plus Groovy; -) –

Répondre

2

Une alternative serait quelque chose comme:

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

Qu'en est-

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 
} 

Je suis un novice groovy donc je peut avoir fait une erreur avec la syntaxe mais le concept devrait être ok.

+0

Merci Don. Je ne pensais même pas à la méthode plus étant un opérateur overide. –

0

suggestion de Michael Rutherfurd groovyfied:

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

new Date().isEndOfMonth() 
0

La bibliothèque Joda Time est très intéressante. L'auteur de l'heure de Joda est le chef de spécification de JSR-310 qui vise à fournir une alternative Java 7 aux «anciennes» classes Calendrier/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" 
} 
1

Consultez le Groovy Date Page.

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