由于没有详细了解Timestamp和Date之间的关系犯的错
来源:互联网 发布:数据库设计第三范式 编辑:程序博客网 时间:2024/06/04 00:37
自己最近在做的一个需求,有一个地方是需要判断时间段是否重叠的,部分代码如下:
Date validDate = infGrPortChargingRelaVO.getValidDate();
Date expireDate = infGrPortChargingRelaVO.getExpireDate();(infGrPortChargingRelaVO是从new 出来并赋值的对象)
Date validDate1 = vo1.getValidDate();
Date expireDate1 = vo1.getExpireDate();(vo1是从数据库里查到的)
之前在对这两个时间段进行比较的时候 ,用的是这一段代码:
if(validDate==validDate1 ||expireDate == expireDate1 ||
(validDate.before(expireDate1)&&validDate.after(validDate1)) ||
(expireDate.before(expireDate1)&&expireDate.after(validDate1))||
(validDate1.before(expireDate)&&validDate1.after(validDate)) ||
(expireDate1.before(expireDate)&&expireDate1.after(validDate))){
System.out.println("时间段重叠");
}
发现validDate==validDate1 ||expireDate == expireDate1 并不能得到正确结果
debug发现:validDate1 其实是Timestamp类型的,而validDate是Date类型的
System.out.println("validDate==validDate1 "+(validDate==validDate1 ));
System.out.println("validDate.compareTo(validDate1)==0 "+(validDate.compareTo(validDate1)==0));
然后我就去网上找了博文 知道了部分真相 地址帖种在这里:http://blog.163.com/dingyi_57@126/blog/static/11047919520107253563968/
大概就是:Timestamp类型由 java.util.Date和单独的毫微秒值组成。只有整数秒才会存储在 java.util.Date组件中。小数秒(毫微秒)是独立存在的。传递不是 java.sql.Timestamp实例的对象时,Timestamp.equals(Object)方法永远不会返回 true,因为日期的毫微秒组件是未知的,相对于 java.util.Date.equals(Object)方法而言,Timestamp.equals(Object)方法是不对称的。此外,hashcode方法使用底层java.util.Date
实现并因此在其计算中不包括毫微秒。 鉴于 Timestamp类和上述 java.util.Date类之间的不同,建议代码一般不要将 Timestamp值为 java.util.Date的实例。Timestamp和 java.util.Date之间的继承关系实际上指的是实现继承,而不是类型继承。
第一次写博文,还这么匆忙,要是有人看到的话,不对不足的地方请谅解并欢迎指正,谢谢。
- 由于没有详细了解Timestamp和Date之间的关系犯的错
- String和Date、Timestamp之间的转换
- String和Date、Timestamp之间的转换
- String和Date,Timestamp之间的转换
- String和Date、Timestamp之间的转换
- String和Date、Timestamp之间的转换
- String和Date、Timestamp之间的转换
- String和Date、Timestamp之间的转换
- Java:String和Date、Timestamp之间的转换
- Java:String和Date、Timestamp之间的转换
- Java:String和Date、Timestamp之间的转换
- Java:String和Date、Timestamp之间的转换
- Java:String和Date、Timestamp之间的转换
- Java:String和Date、Timestamp之间的转换
- Java:String和Date、Timestamp之间的转换
- Java:String和Date、Timestamp之间的转换
- Java:String和Date、Timestamp之间的转换
- Java:String和Date、Timestamp之间的转换
- 在类中使用类成员函数创建线程
- [莫队算法] WHU Problem 1605 - Distance on Tree
- 消息队列通讯
- Unable to get package info for [包路径]; is package not installed
- HDU 1253
- 由于没有详细了解Timestamp和Date之间的关系犯的错
- 自定义View,ViewGroup
- 多线程程序设计
- JVM系列2:垃圾收集器与内存分配策略
- TCP/IP卷一(第二章学习)
- 科技漫谈——无人机
- corethink功能模块探索开发(十六)后台搜索功能
- JVM系列3:虚拟机类加载机制
- 队列