你好,我有一个这样的代码片段:
Date d1 = new java.sql.Timestamp(new Date().getTime()); Thread.sleep(10); Date d2 = new java.sql.Timestamp(new Date().getTime()); System.out.println("Date1: " + d1); System.out.println("Date2: " + d2); System.out.println("Comparing times d1.t < d2.t: " + (d1.getTime() < d2.getTime())); System.out.println("Comparing dates d1.before(d2): " + (d1.before(d2)));
输出如下所示:
Date1: 2013-03-26 11:04:01.093 Date2: 2013-03-26 11:04:01.103 Comparing times d1.t < d2.t: true Comparing dates d1.before(d2): false
这个java.sql.Timestamp类怎么了?
是的,我看到了这一点:
Note: This type is a composite of a java.util.Date and a separate nanoseconds value. Only integral seconds are stored in the java.util.Date component. The fractional seconds – the nanos – are separate. The Timestamp.equals(Object) method never returns true when passed a value of type java.util.Date because the nanos component of a date is unkNown. As a result,the Timestamp.equals(Object) method is not symmetric with respect to the java.util.Date.equals(Object) method. Also,the hashcode method uses the underlying java.util.Date implementation and therefore does not include nanos in its computation.
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.
但是它的日期是< - >时间关系.
在我的例子中,我只有时间戳,而且行为是意想不到的
更新:回答
这样做的原因是before()方法是重载的,不会在java.sql.Timestamp中覆盖.
我期待着“超越”行为.
比较时间戳的正确方法是使用Timestamp变量,而不是日期.
解决方法
原文地址:https://www.jb51.cc/java/122763.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。