2012-01-12 15 views
8

Mam ten problem. Muszę wykonać następujące czynności:Groovy dostaje dzisiejszą datę o minucie 00:00:00

  • get data dzisiejsza
  • zrobić nową datę, która będzie dzisiejsza data na 00:00:00
  • dokonać innego terminu, który będzie dzisiejsza data o godzinie 23:59: 59

Na przykład. Dzisiaj Data jest 12-Styczeń-2012 19:00

Jak mogę zrobić nowy termin, który będzie 12-Styczeń-2012 00:00 (początek bieżącego dnia)

może Wydaje się łatwe , ale nie mogłem znaleźć żadnej groovyway, aby to uzyskać, każda pomoc byłaby doceniona.

Odpowiedz

18

Aby uzyskać datę przy użyciu północy Date.clearTime (docs).

dateAtMidnight = new Date() 
dateAtMidnight.clearTime() 

(Javadocs są dla Groovy JDK < 2.0, clearTime() deklaruje void w Groovy JDK 2.0, zapobiegając d = new Date().clearTime() Komentarze wskazują oryginalna funkcjonalność może zostać przywrócona !, yay)

Dla porównania, zamiast korzystania <= 23:59:59 użyć < (the next day):

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

'Date.clearTime()' jest metodą Groovy JDK, więc jest to wersja Groovy, a nie Grails, które się liczą. W Groovy 1.8.2 zwraca 'Date' –

+0

@Don Right, aw 2.0 jest nieważny. Nie jestem pewien, w jaki sposób grails wziął udział w dyskusji. –

+0

@DaveNewton Wracamy do Daty Myślę, że porozmawiałem z facetem, który zrobił refaktoryzację Groovy 2 'DateDefaultMethods' i wygląda na niedopatrzenie, które zwraca' void' –

1

Alternatywnym sposobem, ale ustawia datetime (ale nie dostać jedynie datę)

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

Powiązane problemy