Java编程经验技巧 谨慎使用Date和Time类
来源:互联网 发布:如何用java写一个爬虫 编辑:程序博客网 时间:2024/06/01 10:24
JAVA里提供的日期和时间类,java.sql.Date和java.sql.Time,只会从数据库里读取某部分值,这有时会导致丢失数据。例如一个包含2008/04/01 5:00:57 PM的字段,读取日期时得到的是2008/04/01,而读取时间时得到的是5:00:57 PM.
你需要了解数据库里存储时间的精度。有些数据库,比如MySQL,精度为毫秒,然而另一些数据库,包括Oracle,存储SQL DATE类型数据时,毫秒部分的数据是不保存的。以下操作中容易出现不易被发现的BUG:
获得一个JAVA里的日期对象。
从数据库里读取日期
试图比较两个日期对象是否相等。如果毫秒部分丢失,本来认为相等的两个日期对象用Equals方法可能返回false。
java.sql.Timestamp类比java.util.Date类精确度要高。这个类包含了一个getTime()方法,但是它不会返回额外精度部分的数据,因此必须使用getNanos()方法。有毫微秒部分(即额外精度部分)的数值可能比没有这个部分的数值的大一个毫秒。如果你知道你使用的数据库保存了毫秒部分,可以用下面的代码获得的数值:
long time=timestamp.getTime()+timestamp.getNanos()/1000000;
毫微秒的部分就是为什么一个java.sql.Timestamp对象不等于一个java.util.Date对象,而一个java.util.Date对象可能等于一个java.sql.Timestamp对象的原因。这使得equals方法应当保持的对称被打破了。
使用java.sql包中的时间相关的类是重要的,但是它们也可能导致人为的错误。
这是因为,这些类的复杂性虽然已经在javadoc里面清楚的描述了,但是由于这些类看上去很简单而很少有人看这些文档。
- Java编程经验技巧 谨慎使用Date和Time类
- 谨慎使用Date和Time类
- 谨慎使用Date和Time类
- 谨慎使用Date和Time类
- 用bat使用date和time命令
- java中date和time的区别
- java,Time和Date互相转换
- Java中Calendar和Date的一些使用用法技巧
- 模块-time和date time
- 【编程经验】time(null)
- GCD使用经验和技巧
- java-Date\Time\TimeStamp
- lua Date和Time
- lua Date和Time
- lua Date和Time
- lua Date和Time
- lua Date和Time
- JAVA编程训练——Current date and time
- automation服务器不能创建对象
- SAP的TAB分隔符(摘自SAP ABAP)
- 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
- 经典培训故事
- 位运算符和位运算
- Java编程经验技巧 谨慎使用Date和Time类
- catch基类和子类异常
- 删除Ubuntu时的Grub error!
- google的“云计算“是商业炒作
- 经典C语言程序 转载
- 实例学MFC(3)--超简单C++实现网络下载器
- 职业经理人的自我管理
- 指针数组、数组指针、指针函数、函数指针的区别
- 大项目中项目经理的作用