谨慎使用Date和Time类

信俊哥保永恒

信俊哥保永恒

2016-02-19 18:58

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

AVA里提供的日期和时间类,Java.sql.Date和java.sql.Time,只会从数据库里读取某部分值,这有时会导致丢失数据。例如一个包含2002/05/22 5:00:57 PM的字段,读取日期时得到的是2002/05/22,而读取时间时得到的是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里面清楚的描述了,但是由于这些类看上去很简单而很少有人看这些文档。

?XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

谨慎使用Date和Time类

编程语言 网络编程
谨慎使用Date和Time类

Java编程经验技巧 谨慎使用Date和Time类

编程语言 网络编程
Java编程经验技巧 谨慎使用Date和Time类

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何使用Java中的Date和Calendar类

编程语言 网络编程
如何使用Java中的Date和Calendar类

关于Date和Calendar类的基础用法

编程语言 网络编程
关于Date和Calendar类的基础用法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

使用c#构造date数据类型

编程语言 网络编程
使用c#构造date数据类型

iOS开发中Date Picker和UITool Bar控件的使用简介

编程语言 网络编程
iOS开发中Date Picker和UITool Bar控件的使用简介

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

一个简单的数据操作类

一个简单的数据操作类

JavaScript中的关键字“VAR”使用详解

JavaScript中的关键字“VAR”使用详解
下拉加载更多内容 ↓