开发者社区> shy丶gril> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java 日期类型详解

简介:
+关注继续查看

java api中日期类型的继承关系

    java.lang.Object

      --java.util.Date

          --java.sql.Date

            --java.sql.Time

              --java.sql.Timestamp

 java.util.Date表示特定的瞬间,精确到了毫秒:

     两个构造函数(别的过期了的我就不说了) Date()   Date(long date) 主要方法》》

 boolean

after(Date when) 
          测试此日期是否在指定日期之后。

 boolean

before(Date when) 
          测试此日期是否在指定日期之前。

 Object

clone() 
          返回此对象的副本。

 int

compareTo(Date anotherDate) 
          比较两个日期的顺序。

 boolean

equals(Object obj) 
          比较两个日期的相等性。

 

 long

getTime() 
          返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。(最常用的方法了)

 

java.sql下面的包主要是用在jdbc下的使用

Timestamp()

        此类型由 java.util.Date 和单独的毫微秒值组成。只有整数秒才会存储在 java.util.Date 组件中。小数秒(毫微秒)是独立存在的。传递 java.util.Date 类型的值时,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(long time) 
          使用毫秒时间值构造 Timestamp 对象。

 boolean

after(Timestamp ts) 
          指示此 Timestamp 对象是否晚于给定的 Timestamp 对象。

 boolean

before(Timestamp ts) 
          指示此 Timestamp 对象是否早于给定的 Timestamp 对象。

 int

compareTo(Date o) 
          将此 Timestamp 对象与给定的 Date(必须为 Timestamp 对象)相比较。

 int

compareTo(Timestamp ts) 
          将此 Timestamp 对象与给定 Timestamp 对象相比较。

 boolean

equals(Object ts) 
          测试此对象是否等于给定的 Timestamp 对象。

 boolean

equals(Timestamp ts) 
          测试此 Timestamp 对象是否等于给定的 Timestamp 对象。

 int

getNanos()(因为刚才说过了 我们不能通过java.util.Date来获得毫秒 ,timestamp就自己提供)
          获取此 Timestamp 对象的 nanos 值。

 long

getTime() 
          返回此 Timestamp 对象表示的自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。

 void

setNanos(int n) 
          将此 Timestamp 对象的 nanos 字段设置为给定值。

 void

setTime(long time) 
          设置此 Timestamp 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

 String

toString() 
          使用 JDBC 时间戳转义格式编排时间戳。

static Timestamp

valueOf(String s) 
          将使用 JDBC 时间戳转义格式的 String 对象转换为 Timestamp 值。

因为是继承了java.util.Date  所以也继承了里面的方法。。这个类的主要作用就是在数据库中插入时间,那有些人就会问为什么不用java.sql.Date,那么我们就来看下java.sql.Date>>

java.sql.Date》》

 构造方法Date(long date) 
          使用给定毫秒时间值构造一个 Date 对象。

 void

setTime(long date) 
          使用给定毫秒时间值设置现有 Date 对象。

 String

toString() 
          格式化日期转义形式 yyyy-mm-dd 的日期。

static Date

valueOf(String s) 
          将 JDBC 日期转义形式的字符串转换成 Date 值。

可能有人发现了 在我们用这个java.sql.Date类型插入数据库的时候会发现丢失了时分秒,发生了自动截取,这是为什么呢?

       原来java.sql.Date是为了配合SQL DATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用ResultSet的

getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被劫取。所以我们要精确的日期时应该使用Timestamp

 

Time():

Time(long time) 
          使用毫秒时间值构造 Time 对象。

 

 void

setTime(long time) 
          使用毫秒时间值设置 Time 对象。

 

 String

toString() 
          使用 JDBC 时间转义格式对时间进行格式化。

static Time

valueOf(String s) 
          将使用 JDBC 时间转义格式的字符串转换为 Time 值。

 

有了上面这些知识后,我们要进行转换就发现一目了然了>>>基本都是可以通过getTime()方法获得long类型的毫秒数 在通过构造函数把这毫秒数传过去就完成了转换。如:

java.util.Date d = new java.util.Date(sqlDate.getTime());

 

作者:Orson 
出处:http://www.cnblogs.com/java-class/ 
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】 
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】 
如果,您对我的博客内容感兴趣,请继续关注我的后续博客,我是【Orson】 

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段 声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

转载:http://www.cnblogs.com/java-class/p/4497906.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《Java学习指南》—— 1.5 实现安全
安全管理器的完整性依赖于Java安全模型在更低层次所提供的保护。如果没有校验器和类加载器所提供的保证,有关系统资源安全性的高级断言就没有意义。由Java字节码校验器所提供的安全表明,解释器不能被破坏或搅扰,而且Java代码必须如期使用组件。
1786 0
【JAVA秒会技术之玩转图片】图片下载和等比或指定大小压缩快速实现
JAVA图片下载和等比或指定大小压缩工具类 话不多,直接上代码: package com.netease.test; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt
2155 0
Jackcard相似度和余弦相似度(向量空间模型)的java实现
版权声明:本文为博主原创文章,地址:http://blog.csdn.net/napoay,转载请留言。 总结Jackcard相似度和余弦相似度。
1058 0
Java并发指南9:AQS共享模式与并发工具类的实现
这位大侠,这是我的公众号:程序员江湖。 分享程序员面试与技术的那些事。 干货满满,关注就送。  一行一行源码分析清楚 AbstractQueuedSynchronizer (三) 转自:https://javadoop.com/post/AbstractQueuedSynchronizer-3 这篇文章是 AQS 系列的最后一篇,第一篇,我们通过 ReentrantLock 公平锁分析了 AQS 的核心,第二篇的重点是把 Condition 说明白,同时也说清楚了对于线程中断的使用。
991 0
Java实现全排列、组合算法
Java实现全排列、组合算法
9733 0
Java使用OpenCV3.2实现视频读取与播放
Java使用OpenCV3.2实现视频读取与播放 OpenCV从3.x版本开始其JAVA语言的SDK支持视频文件读写,这样就极大的方便了广大Java语言开发者学习与使用OpenCV,通过摄像头或者视频文件读取帧的内容与播放,完成视频内容分析与对象跟踪等各种应用开发任务。
1942 0
将c++静态库实现二次封装供java调用
工作中常常作为c++开发者,常常需要与java开发人员进行对接,或者他们看重了一些很好的c++库想借用,就需要将这些已有的开发可进行二次封装给java开发调用 首先需要从官网下载jdk并安装,例如本人的安装路径:C:\software\java\jdk1.
959 0
剑指offer Java实现
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/68935922 剑指offer Java实现 代码地址如下: https://github.
765 0
java多线程 -- 创建线程的第三者方式 实现Callable接口
Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。
671 0
+关注
1876
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载