写点什么

Java7 日期时间 API

  • 2022 年 4 月 17 日
  • 本文字数:2635 字

    阅读完需:约 9 分钟

// date1 是否 date2 之后


System.out.println(date1.after(date2));


// date1 和 date2 是否相等


System.out.println(date1.equals(date2));


// 返回自 1970 年 1 月 1 日以来经过的毫秒数


System.out.println(date2.getTime());


}


输出结果


Sat Dec 05 12:49:59 CST 2020


Sat Dec 05 17:39:23 CST 2020


false


false


1607161163418


[](()SimpleDateFormat




DateFormat 是抽象类,能够快速地进行日期与时间的格式化输出和字符串解析,它与以语言无关的方式格式化并解析日期或时间,所以使用其子类 SimpleDateFormat 实现日期和字符串的相互转换。

[](()使用 SimpleDateFormat 测试日期和字符串的相互转换

/**


  • 使用 SimpleDateFormat 测试日期和字符串的相互转换

  • @throws ParseException


*/


@Test


public void testSimpleDateFormat() throws ParseException {


SimpleDateFormat sdf = new SimpleDateFormat("yyy 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 y-MM-dd HH:mm:ss");


// 将字符串转化为日期


Date date = sdf.parse("2020-12-05 16:31:39");


System.out.println(date);


// 将日期转化为字符串


SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");


String str = dateFormat.format(date);


System.out.println(str);


}


输出结果


Sat Dec 05 16:31:39 CST 2020


2020/12/05 16:31:39

[](()DateFormat 格式代码

要指定时间格式,请使用时间模式字符串。 在此模式中,所有 ASCII 字母都保留为模式字母,其定义如下


| 编号 | 字符 | 描述 | 示例 |


| --- | --- | --- | --- |


| 1 | G | 时代指示符 | AD |


| 2 | y | 四位数的年份值 | 2019 |


| 3 | M | 月份 | July or 07 |


| 4 | d | 日 | 10 |


| 5 | h | 小时 A.M./P.M. (1~12) | 12 |


| 6 | H | 24 小时制的小时表示 (0~23) | 22 |


| 7 | m | 分钟 | 30 |


| 8 | s | 秒钟 | 55 |


| 9 | S | 毫秒 Java 开源项目【ali1024.coding.net/public/P7/Java/git】 | 234 |


| 10 | E | 星期几 | Tuesday |


| 11 | D | 一年中的第几天 | 360 |


| 12 | F | 一个月中的某一天 | 2 (second Wed. in July) |


| 13 | w | 一年中的第几个星期 | 40 |


| 14 | W | 一月中的第几个星期 | 1 |


| 15 | a | A.M./P.M. 标记 | PM |


| 16 | k | 小时 (1~24) | 24 |


| 17 | K | 小时 A.M./P.M. (0~11) | 10 |


| 18 | z | 时区 | Eastern Standard Time |


| 19 | ‘ | 转义文本 | Delimiter |


| 20 | " | 单引号 | ` |


[](()Calendar




相比较于 java.util.Datejava.util.Calendar 除了承载毫秒级的 Unix 时间,还承载了时区信息(默认使用系统的时区),并且,提供了诸多接口:“年、月、日、时、分、秒” 字段的获取与设置,时区设置,日期与时间的偏移调整。


从 JDK1.1 版本开始,在处理日期和时间时,系统推荐使用 Calendar 类进行实现。在设计上,Calendar 类的功能要比 Date 类强大很多,而且在实现方式上也比 Date 类要复杂一些


Calendar 类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用 getInstance 方法创建即可。

[](()创建一个代表系统当前日期的 Calendar 对象

// 默认是当前日期


Calendar c = Calendar.getInstance();

[](()创建一个指定日期的 Calendar 对象

使用 Calendar 类代表特定的时间,需要首先创建一个 Calendar 的对象,然后再设定该对象中的年月日参数来完成。


// 创建一个代表 2020 年 6 月 12 日的 Calendar 对象


Calendar c1 = Calendar.getInstance();


c1.set(2020, 6 - 1, 12);

[](()Calendar 类对象字段类型

Calendar 类中用以下这些常量表示不同的意义,jdk 内的很多类其实都是采用的这种思想


| 序号 | 常量 | 描述 |


| --- | :-- | :-- |


| 1 | Calendar.YEAR | 年份 |


| 2 | Calendar.MONTH | 月份 |


| 3 | Calendar.DATE | 日期 |


| 4 | Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |


| 5 | Calendar.HOUR | 12 小时制的小时 |


| 6 | Calendar.HOUR_OF_DAY | 24 小时制的小时 |


| 7 | Calendar.MINUTE | 分钟 |


| 8 | Calendar.SECOND | 秒 |


| 9 | Calendar.DAY_OF_WEEK | 星期几 |

[](()Calendar 类对象信息的设置

set 设置


Calendar c1 = Calendar.getInstance();


// 把 Calendar 对象 c1 的年月日分别设这为:2020、6、12


public final void set(int year,int month,int date)


c1.set(2020, 6-1, 12);


add 设置


把 c1 对象的日期加上 10,也就是 c1 也就表示为 10 天后的日期,其它所有的数值会被重新计算


Calendar c1 = Calendar.getInstance();


c1.add(Calendar.DATE, 10);


其他字段属性的 add 的意义以此类推

[](()测试 Calendar 类对象信息的获得,创建一个指定日期的 Calendar 对象

测试 Calendar 类对象信息的获得,创建一个指定日期的 Calendar 对象


/**


  • 测试 Calendar 类对象信息的获得,创建一个指定日期的 Calendar 对象


*/


@Test


public void testCalendar() {


Calendar c1 = Calendar.getInstance();


// 获得年份


int year = c1.get(Calendar.YEAR);


// 获得月份


int month = c1.get(Calendar.MONTH) + 1;


// 获得日期


int date = c1.get(Calendar.DATE);


// 获得小时


int hour = c1.get(Calendar.HOUR_OF_DAY);


// 获得分钟


int minute = c1.get(Calendar.MINUTE);


// 获得秒


int second = c1.get(Calendar.SECOND);


// 获得星期几(注意(这个与 Date 类是不同的):1 代表星期日、2 代表星期 1、3 代表星期二,以此类推)


int day = c1.get(Calendar.DAY_OF_WEEK);


System.out.println("星期" + day + " " + year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second);


// 创建一个指定日期的 Calendar 对象


Calendar c2 = Calendar.getInstance();


c2.set(2020, (12 - 1), 5);


System.out.println(c2.get(Calendar.YEAR) + "年" + (c2.get(Calendar.MONTH) + 1) + "月" + c2.get(Calendar.DATE) + "日");


}


输出结果


星期 7 2020-12-5 17:42:47


2020 年 12 月 5 日


[](()GregorianCalendar




GregorianCalendar 是 Calendar 类的子类,并提供世界上大多数国家/地区使用的标准日历系统。GregorianCalendar 定义了两个字段:AD 和 BC。这是代表公历定义的两个时代。

[](()构造函数与常用方法

下面列出 GregorianCalendar 对象的几个构造方法:


| 序号 | 构造函数 | 说明 |

最后

经过日积月累, 以下是小编归纳整理的深入了解 Java 虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。









由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
Java7日期时间API_Java_爱好编程进阶_InfoQ写作平台