一:主要结构图
一:java.util.Date
1.1 构造函数
排除已经被标记废弃方法剩余两种构造函数
- 无参构造默认获取当前系统时间构建
- date表示1970-01-01开始计算的毫秒数,赋值给fastTime属性记录
1.2 表现形式
直接输出结果是计算机才能看懂的时间表达式,需要注意的是这个时间精确度是到毫秒级别
Tue Apr 23 13:41:22 CST 2019
1.3 主要方法
方法围绕属性fastTime展开,该属性记录实例化时亦或是后期通过setTime()注入的距离1970-01-01日期毫秒值。java.util.Date提供了一组操作该属性的方法
java.util.Date中可以通过after()、before()比较时间前后,返回值为一个boolean类型
二:java.sql.Date
2.1 构造函数
调用父类java.util.Date有参构造函数,java.sql.Date没有无参构造。注入参数与java.util.Date一致表示距离1970-01-01的毫秒数
2.2 表现形式
表现形式相较于java.util.Date更加直观,但是精准度只有到年月日
Date date = new Date(1711_1111_1111_1L);
System.out.println(date);
结果:2024-03-22
2.3 主要方法
相对于父类java.util.Date来讲新增方法toLocalDate(),将java.sql.Date转换为JDK1.8提供的类LocalDate。LocalDate接下来详细解析
三:Time
3.1 构造函数
构造函数与java.sql.Date一致,采用父类有参构造函数
3.2 表现形式
与java.sql.Date只记录年月日相对应的是这个类记录时分秒
Time time = new Time(System.currentTimeMillis());
System.out.println(time);
结果:14:01:23
3.3 主要方法
与java.sql.Date类似的是提供转换为LocalDate的方法
四:TimeStamp
4.1 构造函数
不管它的操作是什么样的,反正它的参数就是距离1970-01-01日期的毫秒数
4.2 表现形式
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println(timestamp);
结果:2019-04-23 14:14:44.666
日期精度与java.util.Date一致,展现形式与java.sql.Date一致
4.3 主要方法
Timestamp类扩展了针对毫秒的操作,可以转换为LocalDateTime,该类在后面详细介绍
五:SimpleDateFormat
见名之意,该类主要作用是做Date的格式化与解析工作,Date包括上述四个日期类
5.1 日期格式化解示例
- 根据日期格式实例化SimpleDateFormat
- 调用format()格式化、parse()解析
- 解析过后的时间表现形式与java.util.Date一致
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SS");
String format = sdf.format(date); // 格式化
Date parse = sdf.parse(format); // 解析
System.out.println(format);
System.out.println(parse);
5.2 日期编码
- y:年
- M:月
- d:日
- h:时
- H:小写h表示12小时制、大写表示24小时制
- m:分
- s:秒
- S毫秒
六:Calendar
6.1 实例化
Calendar类为一个抽象类,实例化方法getInstance()借助GregorianCalendar子类完成实例化
6.2 主要方法
Calendar个人理解为Date时间计算工具类,系列方法围绕时间计算展开,例如每周、每月、每年的第几天等计算。get()
传入int参数,该参数内容维护在Calendar常量中,根本上该参数为fields[]数组下标,按照下标获取数据
常用下标:
public final static int YEAR = 1; // 年
public final static int MONTH = 2; // 月(获取数据+1)
public final static int WEEK_OF_YEAR = 3; // 年内第几周
public final static int WEEK_OF_MONTH = 4; // 月内第几周
public final static int DATE = 5; // 几号
public final static int DAY_OF_MONTH = 5; // 几号
public final static int DAY_OF_YEAR = 6; // 年内第几天
public final static int DAY_OF_WEEK = 7; // 周几(获取数据-1)
public final static int HOUR = 10; // 12小时计时小时
public final static int HOUR_OF_DAY = 11; // 24小时计时小时
public final static int MINUTE = 12; // 分钟
public final static int SECOND = 13; // 秒
public final static int MILLISECOND = 14; // 毫秒
除了时间节点属性获取之外涉及到的时间操作就是年月日等时间的加、减等通过add()方法
- 第一个参数使用上述常量表示需要对什么数据进行操作
- 第二个参数正负数表示加减
Calendar calendar = new Calendar.Builder().setInstant(new Date()).build();
calendar.add(Calendar.DATE,-1);
七:LocalDate
JDK1.8新出的关于日历时间表示类,通过这个类可以轻松完成对于日历时间操作
7.1 创建对象
该类并未提供相应的构造函数,只有使用now()、of()、parse()、等方法构建对应实例对象
7.2 API操作
操作只需要看一下API就可以了,方法名字十分粗暴