一、前言
前面我们说到有关于API的Random类、Scanner类、String类和System类,接下来我们将要学习与日期有关的Date类和Calendar类。
- 本次学习的任务要求:完成一个 java application应用程序,输出当前“年月日时分秒星期几”详细时间。
二、分析学习
这里的Date类是日期的意思,而Calendar类是日历的意思,接下来我们在JAVA的API中看看这些类为我们带来什么样的便捷之处。
1.Date类介绍
打开API文档,搜索Date类,查看相关的信息如下:
我们可以看出,Date类是位于util包下。而且,它还有一个子类也叫Date,但是却是sql包下的Date,二者的关系是继承关系。
Date是一个类,可以表示特定瞬间,能够精确到毫秒,我们由此可以想到System类的某一个方法:System.currentTimeMillis()
.
但是System的这个方法返回的是当前系统时间(相对于1970-1-1至今)的毫秒数,而Date类可以用方法来设定相应的时间和特定的格式。
2.Date类方法
我们先来看Date的构造方法,如下:
我们可以看到,有一些构造方法已经被其他的方法取代,所以我们现在只需要学习Date()
和Date(long date)
即可。
- Date():创建的是一个表示当前系统时间的Date对象
- Date(long date):根据指定对象创建Date对象
使用方法后结果显示如下:
使用后,日期的格式很难读取,为方便我们读取习惯,我们可以采用下面的这个方法来适量优化:
但是我们发现,上面的这个方法已经被DateFormat类替代,所以,接下来我们来学习更加优越的格式化日期的类和方法。
3.DateFormat类介绍
打开API文档,搜索DateFormat类,查看相关的信息如下:
我们可以看到,DateFormat类是一个抽象类,不能直接创建对象,我们可以采取以下的两种方法来使用:第一种,使用DateFormat类的子类对象;第二种,使用DateFormat类的静态方法,用返回的值去使用。
相比之下,直接使用SimpleDateFormat子类对象会更加灵活。
4.DateFormat与SimpleDateFormat类方法
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。也就是说,可以这样理解:
格式化:Date格式---->String格式
如: 2018-12-9----->2018年12月9日
即需要寻找一个将Date格式转化为String格式的方法,我们在子类SimpleDateFormat中没有找到,只有在父类DateFormat中寻找,方法如下:
可以看到,方法String format(Date date)
可以将一个 Date 格式化为日期/时间字符串。
但是当我们需要将给出的日期信息进行数值运算时,我们就需要进行解析:
解析:String格式---->Date格式
如: “2018-12-9”----->精确到毫秒的时间值(可运算)
在SimpleDateFormat类中还是没有寻找到合适方法,所以我们需要再去父类中寻找相应的方法:
可以看到,方法Date parse(String source)
可以从给定字符串的开始解析文本,以而生成一个日期。
SimpleDateFormat的构造方法摘要:
5.Calender类介绍
打开API文档,搜索Calendar类,查看相关的信息如下:
我们可