Package org.joda.time

Class DateTimeComparator

java.lang.Object
org.joda.time.DateTimeComparator
All Implemented Interfaces:
Serializable, Comparator<Object>

public class DateTimeComparator extends Object implements Comparator<Object>, Serializable
DateTimeComparator provides comparators to compare one date with another.

Dates may be specified using any object recognised by the ConverterManager class.

The default objects recognised by the comparator are:

  • ReadableInstant
  • String
  • Calendar
  • Date
  • Long (milliseconds)
  • null (now)

DateTimeComparator is thread-safe and immutable.

Since:
1.0
Author:
Guy Allard, Stephen Colebourne, Brian S O'Neill
See Also:
  • Constructor Details

    • DateTimeComparator

      protected DateTimeComparator(DateTimeFieldType lowerLimit, DateTimeFieldType upperLimit)
      Restricted constructor.
      Parameters:
      lowerLimit - the lower field limit, null means no limit
      upperLimit - the upper field limit, null means no limit
  • Method Details

    • getInstance

      public static DateTimeComparator getInstance()
      Returns a DateTimeComparator the compares the entire date time value.
      Returns:
      a comparator over all fields
    • getInstance

      public static DateTimeComparator getInstance(DateTimeFieldType lowerLimit)
      Returns a DateTimeComparator with a lower limit only. Fields of a magnitude less than the lower limit are excluded from comparisons.

      The time-zone is considered when using this comparator. The input millis are truncated using the time-zone of that input value. Thus, two inputs with different time-zones will typically not be equal

      Parameters:
      lowerLimit - inclusive lower limit for fields to be compared, null means no limit
      Returns:
      a comparator over all fields above the lower limit
    • getInstance

      public static DateTimeComparator getInstance(DateTimeFieldType lowerLimit, DateTimeFieldType upperLimit)
      Returns a DateTimeComparator with a lower and upper limit. Fields of a magnitude less than the lower limit are excluded from comparisons. Fields of a magnitude greater than or equal to the upper limit are also excluded from comparisons. Either limit may be specified as null, which indicates an unbounded limit.

      The time-zone is considered when using this comparator unless both limits are null. The input millis are rounded/truncated using the time-zone of that input value. Thus, two inputs with different time-zones will typically not be equal

      Parameters:
      lowerLimit - inclusive lower limit for fields to be compared, null means no limit
      upperLimit - exclusive upper limit for fields to be compared, null means no limit
      Returns:
      a comparator over all fields between the limits
    • getDateOnlyInstance

      public static DateTimeComparator getDateOnlyInstance()
      Returns a comparator that only considers date fields. Time of day is ignored.

      The time-zone is considered when using this comparator. The input millis are rounded down to the start of the day in the time-zone of that input value. Thus, two inputs with different time-zones will typically not be equal

      Returns:
      a comparator over all date fields
    • getTimeOnlyInstance

      public static DateTimeComparator getTimeOnlyInstance()
      Returns a comparator that only considers time fields. Date is ignored.

      The time-zone is considered when using this comparator. The input millis are truncated to be within the day in the time-zone of that input value. Thus, two inputs with different time-zones will typically not be equal

      Returns:
      a comparator over all time fields
    • getLowerLimit

      public DateTimeFieldType getLowerLimit()
      Gets the field type that represents the lower limit of comparison.
      Returns:
      the field type, null if no upper limit
    • getUpperLimit

      public DateTimeFieldType getUpperLimit()
      Gets the field type that represents the upper limit of comparison.
      Returns:
      the field type, null if no upper limit
    • compare

      public int compare(Object lhsObj, Object rhsObj)
      Compare two objects against only the range of date time fields as specified in the constructor.
      Specified by:
      compare in interface Comparator<Object>
      Parameters:
      lhsObj - the first object, logically on the left of a < comparison, null means now
      rhsObj - the second object, logically on the right of a < comparison, null means now
      Returns:
      zero if order does not matter, negative value if lhsObj < rhsObj, positive value otherwise.
      Throws:
      IllegalArgumentException - if either argument is not supported
    • equals

      public boolean equals(Object object)
      Compares this comparator to another.
      Specified by:
      equals in interface Comparator<Object>
      Overrides:
      equals in class Object
      Parameters:
      object - the object to compare to
      Returns:
      true if equal
    • hashCode

      public int hashCode()
      Gets a suitable hashcode.
      Overrides:
      hashCode in class Object
      Returns:
      the hashcode
    • toString

      public String toString()
      Gets a debugging string.
      Overrides:
      toString in class Object
      Returns:
      a debugging string