2009-09-06 36 views
8

Hiện nay tôi đang sử dụng đoạn mã sau để có được năm, tháng, ngày tháng, giờ và phút trong Groovy:Groovy/Grails ngày lớp - nhận ngày trong tháng

Date now = new Date() 
Integer year = now.year + 1900 
Integer month = now.month + 1 
Integer day = now.getAt(Calendar.DAY_OF_MONTH) // inconsistent! 
Integer hour = now.hours 
Integer minute = now.minutes 
// Code that uses year, month, day, hour and minute goes here 

Sử dụng getAt(Calendar.DAY_OF_MONTH) cho ngày tháng có vẻ hơi không nhất quán trong ngữ cảnh này. Có cách nào ngắn hơn để có được ngày trong tháng không?

+0

Tại sao bạn làm bây giờ.năm + 1900? –

+0

Mykola: new Date(). Năm hiện tại là 109, do đó cần thêm 1900. – knorv

+0

Nhưng tại sao bạn lại thêm số này vào một số năm và không sử dụng? –

Trả lời

11

Nếu bạn thêm dòng sau vào code của bạn nó sẽ gán các ngày trong tháng cho đến ngày Integer:

Integer day = now.date 

Dưới đây là một độc lập ví dụ:

def now = Date.parse("yyyy-MM-dd", "2009-09-15") 
assert 15 == now.date 
+0

Cảm ơn! Tôi không biết làm thế nào tôi có thể bỏ lỡ nó! – knorv

+2

Có thể bạn đã bỏ lỡ nó vì API khủng khiếp! – Armand

7

Không phải tất cả các dòng đó đều là rác? Hai dòng sau đây thực hiện công việc trong một groovysh

date = new Date() 
date.getAt(Calendar.DAY_OF_MONTH) 

Để sử dụng này vào mã thực sự của bạn và không có trong giao diện điều khiển

def date = new Date() 
def dayOfMonth = date.getAt(Calendar.DAY_OF_MONTH) 
+0

Đó có phải là câu trả lời không? – knorv

+0

Mã này cho tôi 6 ở bảng điều khiển groovysh. Nếu đó là những gì bạn muốn, đây là câu trả lời. –

+1

Sự cố không xảy ra vào ngày trong tháng. Vấn đề là làm điều đó một cách nhất quán. – knorv

2

Cách bạn đang làm việc đó là cách duy nhất. Đối tượng ngày tháng java lưu trữ tháng và ngày, nhưng không lưu trữ bất kỳ thông tin nào, chẳng hạn như tháng được cho là bao lâu hoặc ngày nào trong tháng của bạn. Bạn cần sử dụng lớp Lịch để tìm hiểu nhiều thông tin này.

1

Phiên bản này là khá ngắn gọn:

Calendar.instance.get(Calendar.DAY_OF_MONTH) 
+1

Tuyệt đối, nhưng so sánh nó với các dòng khác. Tôi đang tìm một cách nhất quán để làm điều đó. – knorv

0

Bạn chỉ có thể nhận được ngày trong tháng từ Date trong Groovy như này:

​Date date = new Date() 
int dayOfMonth = date[Calendar.DAY_OF_MONTH] 
Các vấn đề liên quan