2012-01-12 40 views
8

Tôi gặp sự cố này. Tôi cần phải làm như sau:Groovy nhận ngày hôm nay vào phút 00:00:00

  • ngày get ngày nay
  • làm cho một ngày mới mà sẽ là ngày hôm nay tại 00:00:00
  • thực hiện một ngày mà sẽ là ngày hôm nay lúc 23:59: 59

Ví dụ: Hôm nay ngày 12 tháng Một năm 2012 19:00

Làm thế nào tôi có thể làm cho một ngày mới, mà sẽ là 12-January-2012 00:00 (bắt đầu vào ngày hiện tại)

Nó có thể có vẻ dễ dàng , nhưng tôi không thể tìm thấy bất kỳ groovyway để có được nó, bất kỳ trợ giúp sẽ được apreciated.

Trả lời

18

Để có được ngày vào lúc nửa đêm sử dụng Date.clearTime (docs):.

dateAtMidnight = new Date() 
dateAtMidnight.clearTime() 

(Javadocs là dành cho Groovy JDK < 2.0, clearTime() được khai báo void trong Groovy JDK 2.0, ngăn chặn d = new Date().clearTime() Comments chỉ ra các chức năng ban đầu có thể được phục hồi !, yay)

Đối với việc so sánh, thay vì sử dụng <= 23:59:59, sử dụng < (the next day):

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

'Date.clearTime() 'là một phương pháp Groovy JDK, vì vậy nó là phiên bản của Groovy chứ không phải Grails quan trọng. Trong Groovy 1.8.2 nó trả về một 'Date' –

+0

@Don Right, và trong 2.0 nó bị vô hiệu. Không chắc chắn làm thế nào grails đã vào cuộc thảo luận. –

+0

@DaveNewton Nó sẽ trở lại ngày tôi nghĩ, đã có một cuộc trò chuyện với họ guy người đã tái cấu trúc cho Groovy 2 'DateDefaultMethods' và nó trông giống như một giám sát mà nó trả về' void' –

1

Một cách khác, nhưng nó đặt datetime (nhưng nó không có được ngày chỉ)

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

Các vấn đề liên quan