一JDK7以前的时间相关类
<1>Date类:
Date是一个Java写好的javabean类,用来描述时间,精确到毫秒
1.构造方法
利用空参构造创建的对象,默认表示当前系统的时间。
利用有参构造创建的对象,表示指定时间。
编辑
这里d1里面是0l因为类型是long date;
编辑
其次我们要注意,创建对象时要选择java.util包下的,java.sql是跟数据库有关的
编辑
2.get/set方法
编辑
编辑
3.练习
打印时间原点之后一年的时间
编辑
可以看到get/set方法的作用:把对像转换成毫秒值进行加减乘除。
<2>SimpleDateFormat类:
可以格式化:把时间变成我们喜欢的格式
解析:把字符串的时间变成Date对象
编辑
1.构造方法和成员方法
编辑
格式化(日期对象->字符串)
编辑
解析(字符串->日期对象)
编辑
但是我们书写完毕之后parse会报错ALT+ENTER选择第一个即可
编辑
<3>Calendar
Calendar代表了系统当前时间的日历对象,可以单独修改,获取时间中的年月日
注意Calendar是一个抽象类不能直接创建对象。
1获取对象:
所以我们通过getInstance()获取当前的日历对象
编辑
注意:1.此时c里面的数据就是根据不同时区把当前的纪元,年,月,日等等存放到一个数组里面
2.如果你获取月份 他的范围是0-11,假如输出0那么代表一月份,以此类推
3.如果你获取星期 在外国人眼里,每个星期的第一天是星期天,所以如果输出1则代表星期天。
2.get/set/add:
编辑
当我们获取某个字段的时候,因为他是存在数组里面的,所以我们需要索引来获取他
编辑
我们可以发现这是1970年 一月一日 星期四
修改
编辑
增加/减少
编辑
二JDK8之后的时间相关类
JDK8之后的时间相关类的优势:
代码层面:更加简洁。
安全方面:JDK7之前在多线程可能出现数据安全问题。
编辑
<1>Date类:
1.ZoneId时区:
编辑
编辑
2.Instant:时间戳
编辑
编辑
编辑
我们可以发现isAfter和isBefore的用法,就是判断两个时间戳的先后
编辑
注意:时间戳和字符串类似,不是在原有的时间戳上加减,而是创建一个新的
这两个类之后新增的时间相关类大体相同