![]()
预备知识(关于时间)
- 度量单位:毫秒
- 表示毫秒数的变量的类型:lang
- 标准时间:1970年7月1日00:00
Date类
- 很原始的一个日期类,现在基本废弃不用,此处只做简要介绍
常用方法
- new Date():返回表示当前时间的一个时间对象
- new Date(long time):返回表示标准时间time毫秒后的时间对象
- getTime():返回当前距离标准时间的毫秒数
测试实现
1 //创建当前时间对象
2 Date da1=new Date();
3 //创建标准时间后400000000豪秒后的时间对象
4 Date da2=new Date(400000000);
DateFormat类
- 抽象类,需要其子类SimpleDateFormate来实现
- 用于格式化输出时间对象
SimpleDateFormat类
格式化的格式
- yyyy-MM-dd hh:mm:ss置于括号中
- 需提取年、月或者其他的日期中的几项时,定义成只有几个特定元素的格式就行
- 特殊标记不要变,他们有一种指定变量的能力,可以被识别
- 其他的例如“-”、“:”可以改成年月日
常用方法
- new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")定义一个格式化的格式对象
- formate(时间对象)时间对象换算后以字符串形式return
- parse(特定日期格式的表示日期的字符串)把指定格式的表示时间的字符串识别转化为时间对象
测试实现
1 //创建当前时间对象
2 Date da1=new Date();
3 //定义格式化格式
4 DateFormat df1=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
5 //格式化输出
6 String str1=df1.format(da1);
7 System.out.println(str1);//2020-01-09 02:43:38
8 //另一种格式
9 DateFormat df2=new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
10 String str2=df2.format(da1);
11 System.out.println(str2);//2020年01月09日 02时43分38秒
12 //格式化输入
13 Date da2=df2.parse("2020年01月09日 02时00分38秒");//此处抛出错误
14 Date da3=df2.parse("2020年1月9日 2时0分38秒");
15 System.out.println(da2);//Thu Jan 09 02:00:38 CST 2020
16 System.out.println(da3);//Thu Jan 09 02:00:38 CST 2020,所以有没有0是一样的,可能存在某种自动转化
17 //获得特定元素
18 DateFormat df3=new SimpleDateFormat("yyyy年");
19 String year=df3.format(da1);
20 System.out.println(year);//2020年
Canlendar类
- 抽象类,需要子类GregorianCalendar来实现
- 除了实例化出时间对象外,提供日历的相关展示和计算功能
GregorianCalendar类
- Canlendar类的子类也是实现类
- 实例化后的对象直接输出打印时会打印出一堆的属性
构造方法
- 传参方式(year,month,day)、(year,month,day,hour,minute.........)
- 不传参也代表当前日期的对象
常用方法
- get(Calendar.元素)获得某个时间元素(如YEAR、MONTH、Day OF WEEK等)(注:0对应1月,1为星期日2为星期一)
- set(Calendar.元素,数值)赋值某个时间元素
- add(Calendar.元素,数值)正值数值表示换为当前对象表示时间后多少年(月、天),负的表示多少年(月、天)之前
- getTime()转化为Date类型的时间对象
- setTime(Date da)Date类型转为Calendar类型
- getActualMaximum(Calendar.元素)获得某个元素在当前所在外围元素中的最大值
- 可以尝试使用一个封装的方法实现格式转换
测试实现
1 //初始化日历对象
2 Calendar can1=new GregorianCalendar(2020,3,5);
3 Calendar can2=new GregorianCalendar(2020,3,5,5,6,3);
4 //获得特定元素
5 int year=can1.get(Calendar.YEAR);
6 int day=can1.get(Calendar.DATE);
7 System.out.println(year+"年"+day+"天");
8 //设置特定元素
9 can1.set(Calendar.YEAR, 1999);
10 int yearn=can1.get(Calendar.YEAR);
11 System.out.println(yearn+"年"+day+"天");
12 //加减运算
13 can1.add(Calendar.YEAR, 10);
14 System.out.println(can1.get(Calendar.YEAR)+"年");
15 can1.add(Calendar.YEAR, -10);
16 System.out.println(can1.get(Calendar.YEAR)+"年");
17 //与Date之间的转换
18 Date da=can1.getTime();
19 System.out.println(da);
20 can1.setTime(da);
21 System.out.println(can1.get(Calendar.YEAR)+"年"+can1.get(Calend
22 #######################
2020年5天
1999年5天
2009年
1999年
Mon Apr 05 00:00:00 CST 1999
1999年5天