一、Date
- Date类表示特定的时刻,精度为毫秒
- Date的两个附加功能:Calendar、DateFormat
Calendar类应该用于在日期和时间字段之间进行转换
DateFormat类应该用于格式化和解析日期字符串
不推荐使用Date中的相应方法
1.1 构造方法
1.1.1 Date()
分配时间,根据当前的默认毫秒值创建日期对象
1
2
|
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开始,根据给定的毫秒值创建日期对象
1
2
|
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形式 |
1
2
3
4
5
6
7
8
|
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()
1
2
3
4
5
6
7
8
|
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));
|
1
2
3
4
5
6
7
|
获取当前时间:
年:2021
月:6
日:15
时:14
分:25
秒:32
|
2.2 设置时间
- set()
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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));
|
1
2
3
4
5
6
7
8
|
设置当前时间:
年: 2000
年: 2000
月: 1
日: 1
时: 23
分: 59
秒: 59
|
2.3 时间计算
- add()
1
2
3
4
5
6
7
|
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());
|
1
2
3
|
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 构造方法
设置格式
1
2
3
4
5
|
//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对象
|
1
2
|
2021年06月15日 15:00:10
Thu Jun 10 10:10:10 CST 2021
|
面试题通常会问道时间计算:输入→parse→date对象→gettime()→相减得毫秒→换算
总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注服务器之家的更多内容!
原文链接:https://blog.csdn.net/m0_50609545/article/details/117917488