一. Date类
⑴概述
Date类表示特定的瞬间,精确到毫秒
有了Date类,我们就可以将时间精确到毫秒进行计算
Date是java.util包下的类,因此我们在使用时需要导包
⑵构造方法
如图:两个常用的构造方法
①Date();表示系统当前时间
②Date(long date);在时间原点的基础上加date毫秒
如图演示:
注:因为中国在东八区,要在原有的时间原点上加八个小时
⑶常用方法
①gettime
long gettime()将日期对象转换为对应的时间毫秒值
②settime
void settime(long time)把方法参数给定的毫秒值设置给日期对象
如图演示:
注:均在时间原点的基础上操作
二. SimpleDateFormat类
通过Date的gettime方法我们可以知道当前时间毫秒值,当我们想要知道当前时间的具体年月日就可以打印Date对象获取
但如图的格式我不喜欢,我想换一个x年x月x日这样的格式,这样就需要使用我们的SimpleDateFormate类了
⑴概述
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化
SimpleDateFormat是日期/时间的格式化类,通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换
据此该类有两个作用
①格式化 : 按照指定的格式,把Date对象转换为String对象
②解析 :按照指定的格式,把String对象转换为Date对象
⑵构造方法
其中的日期和时间格式是由日期和时间模式的字符串指定
如图为API中给出的日期时间元素字母
其中我们需牢牢记住最常用年月日时分秒
⑶常见方法
①format
String format(Date date)将给定的日期格式化为字符串
②parse
Date parse(String date)将给定的字符串解析为日期
下面我们来结合这两个方法来看看构造方法中的默认日期格式是什么?如何填充符合规定的日期格式?
如图:运行发现系统给我们默认的日期格式为
年/月/日 时/分/秒
知道了默认的日期格式,那如果我想要更换日期格式,那该如何规定呢?
如图:我想要使用 年月日 时分秒 的日期格式,就要与日期元素字母结合
如: yyyy年MM月dd日 HH时mm分ss秒
yyyy-MM-dd HH-mm-ss
其中代码的含义为:将Date对象按照给定的日期格式格式化为字符串
知道了如何格式化日期,那下面我们就来了解如何解析字符串
如图:运行代码,发现打印出的日期格式就是给定字符串的Date对象
其中代码的含义为:将与给定日期格式匹配的字符串解析为Date对象
所以我们可以将SimpleDateFormat对象看作是一种规则,一种日期格式的规则
注:日期格式一定要规范,否则程序会报错
三. Calendar类
通过SimpleDateFormat类我们可以将Date对象转化为便于我们看懂的字符串形式,若我们想要单独获取其中的年月日,就需要进行字符串的截取。但我不想自己写代码进行截取,那有没有一种方法让我们可以调用方法获得?
⑴概述
Calendar类表示一个“日历类”,代表了系统当前时间的日历对象,可以单独修改,获取时间中的年月日
因为Calendar类是一个抽象类,我们不能创建它的对象,我们可以使用它的子类:GregorianCalendar
⑵获取日历对象
我们有两种方式获取GregorianCalendar对象
①直接创建GregorianCalendar对象
②通过Calendar的静态方法getInstance方法获取GregorianCalendar对象
如图:两种方式获取当前日历对象
打印日历对象,我们来看看运行结果
如图:我们找到打印结果的当前时间 2023年7月3日星期3。但是你看右下角的当前时间是020年8月3日星期4!
结果这么和日期对不上?这就要说起Calendar的两个"反人类"设计了
①MONTH
在Java的月份设计中,1-12月份分别对应0-11,因此我们想要获取现实月份,就要在原有的基础上+1
②DAY_OF_MONTH
在在西方人的观念中,每周是从星期日开始的,他们的星期日就是我们的星期一,他们的星期一就是我们的星期二以此类推
⑶常见方法
①get
int get(int filed)返回给定日历字段的值
如图:我创建了两个方法time和getweek,前者根据get方法获取符合我们认知的日期,后者根据列表法思想获取星期
经过get方法再经过一些修改,就可以获取到符合我们认知的日期
②set
通过set方法我们可以随意修改当前日历的某个字段日期
③add
void add(int field,int amout)根据日历的规则,为给定的日历字段添加或减去指定的时间量
四.趣味小练习
题目:通过本章知识计算你活了多少天
你认为计算的对不对呢?还是自己查查看看结果是不是对的呢?