千家信息网

JAVA中需要谨慎使用Date和Time类

发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,这篇文章将为大家详细讲解有关JAVA中需要谨慎使用Date和Time类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。AVA里提供的日期和时间类,java.sql.D
千家信息网最后更新 2025年11月20日JAVA中需要谨慎使用Date和Time类

这篇文章将为大家详细讲解有关JAVA中需要谨慎使用Date和Time类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

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里面清楚的描述了,但是由于这些类看上去很简单而很少有人看这些文档。

关于"JAVA中需要谨慎使用Date和Time类"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

数据 部分 对象 数据库 日期 方法 时间 精度 数值 篇文章 两个 更多 存储 不错 复杂 实用 清楚 精确 重要 不易 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全上岗考试答案 闵行区互联网络技术信息 微信支付软件开发流程 戴尔服务器操作系统恢复出厂设置 每个数据库都有什么和什么文件 我的世界迪哥建筑服务器 高中毕业能学软件开发吗 福建中旭网络技术 保险公司网络安全保障工作方案 用服务器搭建虚拟电脑 软件开发文档结束语 国服服务器怎么看哪个信号好 南京无风扇工控机服务器 浙江c语言软件开发价位 要建立统一 高效的网络安全 维护网络安全防控网络犯罪 网络安全等级保工程设计 光猫一定要连接服务器吗 网络安全的防范能力 HLM数据库 信息网络安全集成公司 四川大学网络安全专业好就业吗 道闸的数据库在网上可下载吗 十四运网络安全保障措施 字节跳动网络安全工程师 备份文件到服务器 m70电柜里面哪个是z轴服务器 易语言数据库结构管理器 5g网络技术研究进程 龙华区光纤网络技术开发工艺
0