java.sql.Timestamp比较错误?
参见英文答案 >
java.sql.Timestamp created from java.util.Date,why always before() it?2
你好,我有一个这样的代码片段: 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类怎么了? 是的,我看到了这一点:
但是它的日期是< - >时间关系. 在我的例子中,我只有时间戳,而且行为是意想不到的 更新:回答 这样做的原因是before()方法是重载的,不会在java.sql.Timestamp中覆盖. 这在Java核心中仍然是一个糟糕的设计决策,因为继承应该意味着Timestamp是一个日期,没有惩罚和例外. 解决方法
尝试使用Timestamp而不是Date,它会工作.
Timestamp d1 = new java.sql.Timestamp(new Date().getTime()); 时间戳和日期都有自己的方法执行.核实. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |