org.linkedin.util-core/src/main/java/org/linkedin/util/lang/LangUtils.java
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)
    {
      // 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