code: 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;
      }
    }
docs: 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