深入了解Java核心类库--Date,Calendar,DateFormat类
短信预约 -IT技能 免费直播动态提醒
一、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()→相减得毫秒→换算
总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341