2012-01-12 12 views
8

Ho questo problema. Ho bisogno di fare quanto segue:Groovy ottiene la data di oggi al minuto 00:00:00

  • data get oggi
  • fare una nuova data che sarà data odierna alle 00:00:00
  • altra data che sarà data odierna alle ore 23:59: 59

Ad esempio. Oggi Data è 12-Gennaio-2012 19:00

Come posso fare una nuova data, che sarà il 12-Gennaio-2012 00:00 (l'inizio del giorno corrente)

Si può sembra facile , ma non ho trovato nessun groovyway per averlo, qualsiasi aiuto sarebbe apprezzato.

risposta

18

per ottenere la data in uso a mezzanotte Date.clearTime (docs):.

dateAtMidnight = new Date() 
dateAtMidnight.clearTime() 

(Javadocs sono per Groovy JDK < 2.0, clearTime() viene dichiarata void in Groovy JDK 2.0, impedendo d = new Date().clearTime() Commenti indicano la funzionalità originale può essere ripristinato !, yay)

Per il confronto, invece di utilizzare <= 23:59:59, utilizzare < (the next day):

012.
(aDate >= dateAtMidnight) && (aDate < (dateAtMidnight + 1)) 
+0

'Date.clearTime()' è un metodo Groovy JDK, quindi è la versione di Groovy piuttosto che di Grails che conta. In Groovy 1.8.2 restituisce un 'Date' –

+0

@Don Right, e nel 2.0 è nullo. Non sono sicuro di come i graal siano entrati nella discussione. –

+0

@DaveNewton Si sta tornando alla data Penso, abbiamo parlato con il tizio che ha eseguito il refactoring per Groovy 2 "DateDefaultMethods" e sembra una svista che restituisce 'void' –

1

Un modo alternativo, ma imposta il datetime (ma non ottiene la data solo)

dateAtMidnight = new Date() dateAtMidnight.set(hourOfDay: 0, minute: 0, second: 0)

Problemi correlati