2009-05-22 16 views
8

¿Hay un método API en JodaTime para ver si DateTime está dentro de [inicio, fin], es decir, se incluye el límite?¿DateTime dentro del intervalo en JodaTime?

Lo único que encontré fue nuevo Intervalo (inicio, fin) .contains (dateTime) pero parece dar un resultado falso si dateTime es igual a end.

Respuesta

13

El método más sencillo sería la creación de un nuevo intervalo que es el antiguo extendido por una milésima de segundo si necesita hacer esto a menudo:

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

alternativa sólo tiene que utilizar

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

(La El método isEqual ignora la cronología y la zona horaria.)

+0

Sí, terminé usando el último antes de responder. Gracias de todos modos, no noté que Equals se comporta así. – egaga

+0

Por cierto: ¿hay alguna razón lógica por la que el método contains no cuente con DateTime como incluido en el intervalo cuando es igual al final DateTime? Me parece extraño. – dajood

+2

@BloodySmartie: Los intervalos en ciencias de la computación y matemáticas a menudo se dan en una forma de "límite inferior inclusive, límite superior exclusivo" - por un lado, significa que si tiene intervalos [a, b), [b, c), [ c, d) etc. que le da intervalos contiguos naturalmente. –

Cuestiones relacionadas