2012-01-12 49 views
8

我有这个问题。我需要做到以下几点:Groovy在分钟得到今天的日期00:00:00

  • 获取今天的日期
  • 使这将是今天的日期00:00:00
  • 使这将是今天的日期在23:59另一个日期新日期: 59

例如,今天日期是12月 - 2012 19:00

我怎样才能使一个新的日期,这将是12月 - 2012 00:00(当天开始)

,它可能似乎很容易,但我无法找到任何groovyway来获得它,任何帮助将被折衷。

回答

18

来获得日期在午夜使用Date.clearTime (docs)

dateAtMidnight = new Date() 
dateAtMidnight.clearTime() 

(Javadoc中是Groovy的JDK < 2.0,clearTime()声明void在Groovy JDK 2.0,防止d = new Date().clearTime()注释指明原始功能可以恢复!,耶而是采用<= 23:59:59

为了进行比较,使用< (the next day)

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

'Date.clearTime()'是一个Groovy JDK的方法,所以它的版本Groovy,而不是Grails。在Groovy 1.8.2中,它返回一个'Date' – 2012-01-13 09:54:28

+0

@Don Right,在2.0中它是无效的。不知道Grails如何进入讨论。 – 2012-01-13 11:32:55

+0

@DaveNewton它回到了我认为的日期,和他们做了Groovy 2 DateDefaultMethods重构的人聊天,它看起来像是一个疏忽,它返回了void# – 2012-01-13 12:35:53

1

的另一种方式,但它设置日期时间(但它不会只是日期)

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