2009-05-22 46 views
8

Có phương pháp API nào trong JodaTime để xem liệu một DateTime có nằm trong [bắt đầu, kết thúc], tức là ranh giới được bao gồm không?Ngày giờ trong khoảng thời gian trong JodaTime?

Điều duy nhất tôi tìm thấy là Khoảng thời gian mới (bắt đầu, kết thúc) .contains (dateTime) nhưng điều này có vẻ sai nếu dateTime bằng kết thúc.

Trả lời

13

Cách tiếp cận dễ nhất là tạo ra một khoảng thời gian mới đó là một tuổi mở rộng bằng một phần nghìn giây nếu bạn cần phải làm điều này thường:

Interval inclusiveInterval = interval.withEndMillis(interval.getEndMillis() + 1); 

Ngoài ra chỉ cần sử dụng

if (interval.contains(dateTime) || interval.getEnd().isEqual(dateTime)) 

(Các Phương pháp isEqual bỏ qua niên đại và múi giờ.)

+0

Vâng, tôi đã sử dụng phương pháp thứ hai trước khi bạn trả lời. Cảm ơn anyway, tôi đã không nhận thấy rằng isEquals cư xử như thế. – egaga

+0

Nhân tiện: có lý do hợp lý nào khiến phương pháp chứa không tính DateTime như được bao gồm trong khoảng thời gian khi nó bằng với DateTime kết thúc không? Có vẻ lạ với tôi. – dajood

+2

@BloodySmartie: Khoảng thời gian trong khoa học máy tính và toán học thường được đưa ra theo cách "bao gồm giới hạn dưới, trên ràng buộc" - cho một điều, có nghĩa là nếu bạn có các khoảng [a, b), [b, c), [ c, d) vv cho phép bạn tự động ngắt quãng. –

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