2009-05-22 22 views
8

Bir DateTime'ın [start, end] içinde olup olmadığını, yani sınırın dahil olup olmadığını görmek için JodaTime'da bir API yöntemi var mı?DateTime?

Bulduğum tek şey, yeni Aralık (başlangıç, bitiş) .contains (dateTime) idi, ancak dateTime öğesinin sonuna eşitse bu yanlış görünüyor.

cevap

13

kolay yaklaşım sık sık bunu yapmak gerekiyorsa bir milisaniye uzatılan eski biridir yeni aralığını oluşturmak olacaktır:

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

Alternatif sadece kullanmak

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

(isEqual yöntemi, kronoloji ve saat dilimini yok sayar.)

+0

Evet, yanıtlamadan önce ikinci birini kullanarak bitti. Her neyse, BenEquals'ın böyle davrandığını fark etmedim. – egaga

+0

Bu arada: içerme yönteminin DateTime sonuna eşit bir aralıkta içerildiği gibi bir DateTime saymaması mantıklı bir neden var mı? Bana garip geliyor. – dajood

+2

@BloodySmartie: Bilgisayar bilimleri ve matematikteki zaman aralıkları genellikle "alt sınır dahil, üst sınırda özel" bir şekilde verilir - bir şey için, [a, b), [b, c) aralıklarınız varsa, [ c, d) vb size doğal olarak bitişik aralıklar verir. –