2012-01-12 10 views
8

Tengo este problema. Tengo que hacer lo siguiente:Groovy obtener la fecha de hoy en el minuto 00:00:00

  • fecha de hoy get
  • crea una nueva fecha que será la fecha de hoy a las 00:00:00
  • realice otra fecha que será la fecha de hoy a las 23:59: 59

Por ejemplo. Fecha de hoy es 12-enero-2012 19:00

¿Cómo puedo hacer una nueva fecha, que será el 12-Enero-2012 00:00 (el comienzo del día actual)

Puede parecer fácil , pero no pude encontrar ningún groovyway para obtenerlo, cualquier ayuda sería apreciada.

Respuesta

18

Para obtener la hora en el uso de la medianoche Date.clearTime (docs):.

dateAtMidnight = new Date() 
dateAtMidnight.clearTime() 

(Javadocs son para Groovy JDK < 2.0, clearTime() se declara void en Groovy JDK 2.0, impidiendo d = new Date().clearTime() comentarios indican la funcionalidad original puede ser restaurado !, yay)

Para la comparación, en lugar de utilizar <= 23:59:59, utilice < (the next day):

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

'Date.clearTime()' es un método maravilloso de JDK, por lo que es la versión de Groovy en lugar de Grails lo que importa. En Groovy 1.8.2, devuelve una 'Fecha' –

+0

@Don Right, y en 2.0 está vacía. No estoy seguro de cómo los griales entraron en la discusión. –

+0

@DaveNewton Está volviendo a la fecha, creo, conversé con un tipo que hizo la refactorización de Groovy 2 'DateDefaultMethods' y parece un descuido que devuelve' nulo' –

1

Una forma alternativa, pero establece la fecha y hora (pero no obtiene la fecha solamente)

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

Cuestiones relacionadas