谨慎使用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" />

(本文来源于图老师网站,更多请访问https://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偷钱流符文搭配推荐

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

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

使用c#构造date数据类型

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

lolAD刺客新符文搭配推荐

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

一个简单的数据操作类

一个简单的数据操作类

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

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