public static int compareTo(Date d1, Date d2)
  {
    if(d1 == null)
    {
      if(d2 == null)
        return 0;
      else
        return -1;
    }

    if(d2 == null)
    {
      // here d1 is not null (already tested..)
      return 1;
    }

    // here d1 and d2 are not null
    long delta = d1.getTime() - d2.getTime();

    if (delta > 0)
    {
      return 1;
    }
    else if (delta < 0)
    {
      return -1;
    }
    else
    {
      return 0;
    }
  }
public static int compareTo(Date d1, Date d2)
  {
    if(d1 == null)
    {
      if(d2 == null)
        return 0;
      else
        return -1;
    }

    if(d2 == null)
    {
      
      return 1;
    }

    
    long delta = d1.getTime() - d2.getTime();

    if (delta > 0)
    {
      return 1;
    }
    else if (delta < 0)
    {
      return -1;
    }
    else
    {
      return 0;
    }
  }
public static int compareTo ( Date d1 , Date d2 ) { if ( d1 == null ) { if ( d2 == null ) return 0 ; else return - 1 ; } if ( d2 == null ) { // here d1 is not null (already tested..) return 1 ; } // here d1 and d2 are not null long delta = d1 . getTime ( ) - d2 . getTime ( ) ; if ( delta > 0 ) { return 1 ; } else if ( delta < 0 ) { return - 1 ; } else { return 0 ; } }
This method compares 2 dates. It is mainly written to account for a bug
in jdk15 which throws a ClassCastException when calling d1.compareTo(d2).
It also adds handling of <code>null</code> values.

@param d1
@param d2
@return 0 if equal, &lt; 0 if d1 &lt; d2 and &gt; 0 if d1 &gt; d2
This method compares 2 dates . It is mainly written to account for a bug in jdk15 which throws a ClassCastException when calling d1 . compareTo ( d2 ) . It also adds handling of <code > null< / code > values .