深入了解Java核心类库--Date|深入了解Java核心类库--Date,Calendar,DateFormat类
目录
- 一、Date
- 1.1 构造方法
- 1.1.1 Date()
- 1.1.2 Date(long date)
- 1.2 常用方法
- 1.3 其他方法
- 二、Calendar(抽象)
- 2.1 获取时间 get()
- 2.2 设置时间
- 2.3 时间计算
- 2.4 其它方法
- 三、DateFormat(抽象)
- 3.1 构造方法
- 总结
一、Date
- Date类表示特定的时刻,精度为毫秒
- Date的两个附加功能:Calendar、DateFormat
DateFormat类应该用于格式化和解析日期字符串
不推荐使用Date中的相应方法
【深入了解Java核心类库--Date|深入了解Java核心类库--Date,Calendar,DateFormat类】
1.1 构造方法
1.1.1 Date() 分配时间,根据当前的默认毫秒值创建日期对象
Date d = new Date(); System.out.println(d); //当前时间:Tue Jun 15 13:44:44 CST 2021
1.1.2 Date(long date) 从1970.1.1 8:00:00开始,根据给定的毫秒值创建日期对象
Date d = new Date(1000*60*60*24); System.out.println(d); //Fri Jan 02 08:00:00 CST 1970
1.2 常用方法
Modifier and Type | Method | Description |
---|---|---|
long | getTime() | 返回表示的1970年1月1日00:00:00 GMT以来的毫秒数 |
void | setTime?(long time) | 设置时间,设置为1970年1月1日00:00:00之后的 time毫秒的时间点 |
String | toString() | 将此 Date对象转换成String形式 |
Date d = new Date(); System.out.println(d); //Tue Jun 15 13:53:39 CST 2021System.out.println(d.getTime())//获取当前时间的毫秒数:1623736419381System.out.println(d.toString()); //Tue Jun 15 13:53:39 CST 2021d.setTime(24*60*60*1000); //设置时间System.out.println(d.getTime()); //86400000System.out.println(d); //Fri Jan 02 08:00:00 CST 1970System.out.println(d.toString()); //Fri Jan 02 08:00:00 CST 1970
1.3 其他方法
Modifier and Type | Method | Description |
---|---|---|
int | hashCode() | 返回此对象的哈希码值。 |
boolean | after?(Date when) | 测试此日期是否在指定日期之后。 |
boolean | before?(Date when) | 测试此日期是否在指定日期之前。 |
Object | clone() | 返回此对象的副本。 |
int | compareTo?(Date anotherDate) | 比较两个日期的订购。 |
boolean | equals?(Object obj) | 比较两个相等的日期。 |
static | Date from?(Instant instant) | 从 Instant对象获得 Date的实例。 |
二、Calendar(抽象) 日历类,提供操作日历字段的方法
2.1 获取时间 get()
Calendar d = Calendar.getInstance(); System.out.println("获取当前时间:"); System.out.println("年:"+d.get(d.YEAR)); System.out.println("月:"+(d.get(d.MONTH)+1)); //月从0开始,所以要+1System.out.println("日:"+d.get(d.DAY_OF_MONTH)); System.out.println("时:"+d.get(d.HOUR_OF_DAY)); System.out.println("分:"+d.get(d.MINUTE)); System.out.println("秒:"+d.get(d.SECOND));
获取当前时间: 年:2021 月:6 日:15 时:14 分:25 秒:32
2.2 设置时间
- set()
System.out.println("设置当前时间:"); Calendar d = Calendar.getInstance(); //单独设置d.set(d.YEAR,2000); System.out.println("年:"+d.get(d.YEAR)); //一起设置,d.set(year, month, date, hourOfDay, minute, second); d.set(2000, 1, 1, 23, 59, 59); System.out.println("年:"+d.get(d.YEAR)); System.out.println("月:"+d.get(d.MONTH)); System.out.println("日:"+d.get(d.DAY_OF_MONTH)); System.out.println("时:"+d.get(d.HOUR_OF_DAY)); System.out.println("分:"+d.get(d.MINUTE)); System.out.println("秒:"+d.get(d.SECOND));
设置当前时间: 年:2000 年:2000 月:1 日:1 时:23 分:59 秒:59
2.3 时间计算
- add()
Calendar d = Calendar.getInstance(); d.set(2000, 0, 31, 23, 59, 59); System.out.println(d.getTime()); d.add(d.YEAR,10); //增加十年System.out.println("year+10:"+d.getTime()); d.add(d.MONTH,1); //增加一个月System.out.println("month+1:"+d.getTime());
Mon Jan 31 23:59:59 CST 2000year+10:Sun Jan 31 23:59:59 CST 2010month+1:Sun Feb 28 23:59:59 CST 2010
2.4 其它方法
Modifier and Type | Method | Description |
---|---|---|
int | getActualMaximum?(int field) | 给定此 Calendar的时间值,返回指定日历字段可能具有的 Calendar |
int | getActualMinimum?(int field) | 给定此 Calendar的时间值,返回指定日历字段可能具有的 Calendar |
String | getCalendarType() | 返回此 Calendar的日历类型 |
int | getFirstDayOfWeek() | 得到一周的第一天是什么 |
static Calendar | getInstance() | 使用默认时区和区域设置获取日历 |
static Calendar | getInstance?(Locale aLocale) | 使用默认时区和指定的区域设置获取日历 |
static Calendar | getInstance?(TimeZone zone) | 使用指定的时区和默认语言环境获取日历 |
static Calendar | getInstance?(TimeZone zone, Locale aLocale) | 获取具有指定时区和区域设置的日历 |
TimeZone | getTimeZone() | 获取时区。 |
三、DateFormat(抽象) 格式化和解析日期字符串(将Date创建转化为日常格式)
3.1 构造方法
设置格式
//y:年M:月d:日H:时m:分s:秒SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String text1 = format.format(new Date()); //将date转换成已经设置格式的字符串System.out.println(text1); System.out.println(format.parse("2021年6月10日 10:10:10")); //将日期字符串转换为Date对象
2021年06月15日 15:00:10 Thu Jun 10 10:10:10 CST 2021
面试题通常会问道时间计算:输入→parse→date对象→gettime()→相减得毫秒→换算
总结 本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 深入理解Go之generate
- 我们重新了解付费。
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- C语言中的时间函数clock()和time()你都了解吗
- java中如何实现重建二叉树
- 【1057快报】深入机关,走下田间,交通普法,共创文明
- 数组常用方法一