JDK7时间类
全世界的时间有一个统一的计算标准
在同一条经线上的时间是一样的
格林威治时间 简称GMT
计算核心 地球自转一天是24小时 太阳直射正好是12小时
但是误差太大
现在用原子钟来代替
用铯原子震动的频率来计算时间,作为世界的标准时间UTC
中国标准时间等于世界标准时间加8小时
Date类
是JDK写好的一个javabean类,用来描述时间,精确到毫秒
利用空参构造创建的对象,默认表示系统当前的时间
利用有参构造创建的对象,表示指定的时间
创建对象表示一个时间
成员变量 fasttime 表示时间的毫秒值
空参方法 调用system类下的方法。
有参构造 把实参赋值给成员变量。
指的是从时间原点开始过了0毫秒后的时间
gettime方法可以获得当前时间的毫秒值
示例
打印时间原点 开始一年后 之后的时间
定义任意两个Date对象,比较哪个时间在前,哪个时间在后
对象不可直接比较 运算
要用方法把某些属性获取出来
总结
如何创建日期对象
空参构造
带参构造
如何修改时间对象里的毫秒值
如何获取时间对象里的毫秒值
SimpleDateFormat类
Date类只能是默认方式打印
这 不符合我们的阅读习惯
SimpleDateFormat
可以
把时间变为自己喜欢的格式
也可以解析时间
格式
利用空参构造创建对象
使用的是默认格式
利用带参构造创建对象
可以指定格式
ctrl alt v 可以自动生成左边 创建对象
ctrl alt m 可以抽取生成方法
创建对象的格式要和创建字符串的格式一样
然后解析
返回一个Date对象
练习1
输入字符串
用字符串接收
创建一个date对象表示
创建一个simpledateformat对象,并定义格式为年月日
转换时间
练习2
先解析时间得到毫秒值
得到date对象
再得到毫秒值
再进行判断
总结
SimpleDateFormat的两个作用
格式化
解析
如何指定格式
yyyy年MM月dd日:mm:ss
去Apl帮助文档中去找就ok了
Calendar类
为什么学习这个类呢
以前的方法
现在简化代码
只修改月份
日历 修改 再原来的基础上加1
所以Calendar类
代表了 系统当前时间的日历对象,可以单独修改
但是个抽象类
不能直接创建对象
而是通过静态方法来获取到子类对象
常用方法
示例
Date(0L)表示计算机的时间原点
月份0-11
如果获取出来的是0,就是1月
如果是11,就是12月
星期
在老外眼里,周日是一周中的第一天
1就是周日
Java为了防止我们忘记数组的索引
把索引都定义为常量
我们可以查看源码 来寻找
所以我们可以
我们可以利用查表法
将数据和索引产生对应的关系
这样就可以返回
修改年份 月份
用set方法
增加一个月,一年
总结
JDK8时间类
JDK7时间类
为什么要学习JDK8的时间类
因为简单而且方便
JDK7代码麻烦
要用日期对象计算比较毫秒值
JDK8代码简单
判断的方法
计算时间间隔的方法
安全层面
JDK7多线程环境下会导致数据安全问题
JDK8时间日期对象都是不可变的,解决了这个问题
分成四组
ZoneId类
获得时区名称 返回方式是集合
获取当前系统的默认时区
可以在系统设置里面更改日期和时间
改变时区
获得一个指定的时区
总结
Instant类
时间戳
方法大全
ctrl + alt + v 可以自动生成左边
获得当前的标准时间
根据 秒 毫秒 纳秒 获得Instant对象
获得了计算机原点的时间
秒钟
获得秒数
纳秒
获得纳秒
时间原点后过了多少纳秒
指定时区
判断系列的方法
返回值是布尔类型
减少时间系列的方法
以当前时间为基准,往前去减少时间
原有的时间对象是不会变的
会返回一个新的时间对象
增加时间系列的方法
同减少时间系列的方法
ZoneDateTime类
带有时区的时间
静态方法获取对象
减少时间增加时间
可以增加时间 年 月 日
细节
JDK8的时间对象都是不可变的
我们修改了 只能产生新的时间对象
DateTimeFormatter类
用于时间的格式化和解析
获取时间对象
解析/格式化器
格式化
格式化时间的意思是 把时间转化成我们日常可见的格式
转化成我们需要的格式
Calendar类
Localdate获得年月日
转换
调用方法
获得的月份英文大写
获得的月份数字
获得日期
获取一年中的第几天
获取星期
get开头 获取
看见要知道意思
案例
假设为联通移动发送生日祝福短信
Localtime获得时分秒
LocalDateTime 年月日时分秒
Duration类
用于计算时间间隔 秒 纳秒
Period类
用于计算日期间隔 年月日
ChronnUnit类
用于计算日期间隔
所有的数据全出来