深入了解Java核心类库--Date,Calendar,DateFormat类
作者:入错行的北北
这篇文章主要为大家详细介绍了javaDate,Calendar,DateFormat类定义与使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助
一、Date
- Date类表示特定的时刻,精度为毫秒
- Date的两个附加功能:Calendar、DateFormat
Calendar类应该用于在日期和时间字段之间进行转换
DateFormat类应该用于格式化和解析日期字符串
不推荐使用Date中的相应方法
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 2021 System.out.println(d.getTime())//获取当前时间的毫秒数:1623736419381 System.out.println(d.toString());//Tue Jun 15 13:53:39 CST 2021 d.setTime(24*60*60*1000);//设置时间 System.out.println(d.getTime());//86400000 System.out.println(d);//Fri Jan 02 08:00:00 CST 1970 System.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开始,所以要+1 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));
获取当前时间: 年: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 2000 year+10:Sun Jan 31 23:59:59 CST 2010 month+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()→相减得毫秒→换算
总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!