See alse the bug report for an example of this not working...

gg

> -----Original Message-----
> From: Todd V. Jonker [mailto:[EMAIL PROTECTED]
> Sent: Monday, February 16, 2004 13:21
> To: Jakarta Commons Developers List
> Subject: Re: DateUtils.equals(d1, d2)
> 
> Serge, I'm not sure that your proposed method will do what you want.
> 
> You can't compare the results of java.util.Date.getTime() and
> java.sql.Timestamp.getTime() because the latter is only precise to the
> second, not the millisecond.  Likewise, java.sql.Date.getTime() is only
> precise to the second.
> 
> Unless you do rather snarly logic, it may not be meaningful to compare
> any util.Date with any of the sql types.  Quoting from the Timestamp API:
> 
> "Due to the differences between the Timestamp class and the
> java.util.Date  class mentioned above, it is recommended that code not
> view Timestamp values generically as an instance of java.util.Date. The
> inheritance relationship between Timestamp  and java.util.Date really
> denotes implementation inheritance, and not type inheritance."
> 
> To compare a until.Date with a sql.Timestamp you'll have to rebuild the
> latter's time to millisecond precision by call getNanos(), rounding the
> result to the millisecond, and adding it to getTime().  And if you want
> "true" equality you'll have to fail if the submillisecond nanos aren't
> zero.  Doing all of that is of debatable usefulness, because the use of
> such a somewhat-generic equality method probably indicates that the
> programmer doesn't understand the subtleties here and he's probably
> writing a bug.  :-)
> 
> Just my two cents from painful experience...
> 
> .T.
> 
> 
> 
> On Fri, 13 Feb 2004 18:12:37 -0500, "Serge Knystautas"
> <[EMAIL PROTECTED]> said:
> > There was a bugzilla issue opened about this, and a brief discussion
> > about such, but I wanted to move it to the list for better visibility.
> >
> > Basically if you have 2 date objects (e.g., java.util.Date and
> > java.sql.Timestamp), ObjectUtils.equals() will return that they are not
> > equal even if they represent the same point in time.
> >
> > Unless someone objects, I was going to add DateUtils.equals(Date d1,
> > Date d2) and the equality check will be what's returned from each date's
> > getTime().  Just as an example:
> >
> > long now = System.currentTimeMillis();
> > Date date = new java.util.Date(now);
> > Date ts = new java.sql.Timestamp(now);
> >
> > ObjectUtils.equals(date, ts) = false; (as of 2.1)
> > DateUtils.equals(date, ts) = true;
> >
> > Anyone have a different idea or think this is a bad idea?
> >
> > --
> > Serge Knystautas
> > President
> > Lokitech >>> software . strategy . design >> http://www.lokitech.com
> > p. 301.656.5501
> > e. [EMAIL PROTECTED]
> 
> --
> Todd V. Jonker
> 
> Conscious Code Ltd
> The Practice of Programming
> www.consciouscode.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to