Java中与时间相关的类

 

预备知识(关于时间)

  • 度量单位:毫秒
  • 表示毫秒数的变量的类型: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类

  • 继承实现DateFormat类

格式化的格式

  • 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天

猜你喜欢

转载自www.cnblogs.com/hbc314/p/12172184.html