2011-02-07 31 views
11

Tôi đang điều tra một vấn đề và chạy trên một số mã đáng ngờ liên quan đến so sánh các cá thể Ngày sử dụng toán tử so sánh. ví dụ.Sử dụng toán tử so sánh Groovy với đối tượng Ngày

def stamp = ... //Date 
    def offset = ... //Integer 
    def d = new Date(stamp.time + offset) 
    if (d < new Date()) { 
     ... 
    } 

This tài nguyên chỉ ra ở trên là tương đương với sau

def stamp = ... //Date 
    def offset = ... //Integer 
    def d = new Date(stamp.time + offset) 
    if (d.compareTo(new Date()) < 0) { 
     ... 
    } 

Tuy nhiên, GDK documentation on Dates chỉ có các ví dụ so sánh số ngày sử dụng compareTo, before, và after và tôi dường như nhớ lại đặc biệt tránh sử dụng sự so sánh các toán tử vào Ngày do trải nghiệm có kết quả không mong muốn. Hai ví dụ trên có thực sự tương đương hay không (tức là, tôi có thể sử dụng toán tử so sánh một cách an toàn vào Ngày tháng trong Groovy hay tôi chỉ sử dụng compareTo, beforeafter)?

Cảm ơn!

Trả lời

5

Vâng, nếu bạn cắm chúng vào GroovyConsole tiện dụng, chúng có cùng kết quả.

Nếu tôi hiểu câu hỏi một cách chính xác:

def stamp = Date.parse("MM/dd/yyyy","02/02/2010") 
def offset = 1213123123 
def d = new Date(stamp.time+offset) 
if(d < new Date()) { 
    println "before" 
} 
if(d.compareTo(new Date()) < 0) { 
    println "before" 
} 

In "trước khi" hai lần

Nếu tôi chuyển sang ngày tem đến năm 2011 cho phép nói rằng nó sẽ không in.

+0

Tôi đã thử nghiệm với điều này trong GroovyConsole, nhưng sợ tôi có thể thiếu một số trường hợp góc liên quan đến các thành phần khác nhau của một Ngày. –

+0

cách biết hai giá trị ngày là như nhau? là nó giống như d.compareTo này (new Date()) == 0)? thankx – danielad

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