00:00
大家好,我是海波老师,我们继续来讲Java中常用类和对象,接下来我们给大家讲一下和时间相关的类,那我们这里拷贝一下,我们这里呢,写上一个零六,然后呢,把这个改成叫做date,咱们叫日期,点击OK,把里面的这些东西啊,咱们全都给它删掉去掉,去掉以后呢,我们这里写上我们叫做date啊,咱们叫日期类好了,那么在开发中啊,我们一般获取当前的系统时间啊,比较多一些,那么我们一般会采用什么呢?我们的system,它里面会有一个方法,这个方法呢,它可以获取一个浪类型的一个时间数值,不过呢,这个方法获取的是从1970年1月1日截止到现在的一个浪类型的整数数值,我们一般把它称之为叫时间戳,就是我们获取时间戳,一般指的就是它,它的这个单位呢,是我们的毫秒。哎,就是这样的,但是这个呀,时间说实话我们有点看不懂,大家看运行一下,运行运行以后看结果啊,我们这个就是我们当前的时间戳,但是这个时间我们有点看不懂啊,所以将啊提供了一些专门的类,用于进行时间相关的操作,那么这里啊我们主要给大家介绍两个时间相关的类,一个我们称之为叫做date啊,咱们叫做日期类,还有一个呢,我们叫做什么呢?Calendar啊,所以我们写上它,我们叫做calendar啊好,这个呢,我们称为叫日历类。
01:24
从名字上可以区分开啊,两者虽然说都和日期有关,但是明显还是有区别的,对不对?咱们一个一个来看看,首先呢,我们先来看看我们的这个date这个类啊,比较特殊,是因为在Java中我们有两个类的名称都叫做,大家看一下,我们写上叫new,我们叫做date,你会发现有两个,一个呢在java.circle包里面,一个在java.u包里面,那么我们java.circle啊是跟数据库日期类型数据打交道的一个类,但是我们现在呢,给大家讲的是我们的Java YouTube data里面的,所以这个不要用错了啊,所以我们这里import应该是java.YouTube.date这个咱们需要注意一下。好了,首先我们来构造我们的日期对象,我们现在直接new date就可以了,所以现在我就有一个日期对象了,那么你的这个日期对象,你现在得到的是什么呢?好了,我把上面这个注掉,然后呢,我们打印一下,现在我们执行一下,运行之后大家会发现现在呢,就是我们当前的时间,但是啊,看着有点不是那么。
02:25
不舒服对不对,为什么?因为啊,这种格式呢,跟我们常规意义上的格式呢,可能不尽相同,为什么呢?因为不同的语言啊,它的这种时间格式呀,显示的方式它不太一样,那这时候怎么办?这时候就需要我们将我们的日期转成我们能够看得懂的那种日期格式了,那这里就需要用到特殊的类,这里给大家介绍一下,咱们有一个类的名字叫simple,我们date format,这个可以专门的对日期进行格式化操作,所以我们写上它,咱们叫SDF,它等于new,咱们叫simple date form art,你现在的目的不是为了把咱们的日期转换成我能够看得懂的那个日期格式的字符串吗?所以说我们就需要用到这个对象,但这个对象怎么把它格式化一下呢?这里就需要涉及到一个Java的日期格式化的字符串规则了,所以咱们这里说一下咱们Java格式化我们的日期格式,这里的格式呀,它是用我们的拉丁字母呢,来表示不同的时间含义,那比方说我们这里的Y。
03:25
它就表示年的意思,但是这个Y呢,又分我们的小写的Y和我们大写的Y,它又不一样,还有呢,我们这里的这个M也分小写的和大写的M,还有我们这里的我们的D,它也分小写的和大写的A,都有不同的含义啊,包括我们这里呢,还有小写的H和我们大写的这个H,以及我们的S,还有我们的大写的S,哎,老师啊,这都分别是什么意思呀?这就是我们关于时间单词的缩写了,大家看一下我们英文单词中的时间,那个年呀,就叫year对不对,所以啊,它就是我们的这个年的意思。
04:00
哎,老师那年的话怎么分我们的大小写啊,这里给大家解释一下,我们的小写外啊,就是我们当前的正常年,但是我们大写的外呢,它表述的是我们每年有52周,如果大于52周的话,它就算到下一年了,所以这个呢,我们一般用的少一些,我们主要用的呢,就是我们的小写的Y,而且我们的年份呢,一般是什么,一般是四位的呀,所以我们一般怎么写呢?我们写上它叫YYYY啊四位的年嘛,对不对,当然说老师啊,我想是什么呢?比方说二二年,那么二二年的话不就两位嘛,所以说你两个Y也行,那我们习惯性的就说了叫2022年嘛,所以我们就四个Y没有问题啊。那接下来呢,是我们的M,这里给大家解释一下,我们这里的M呢,是我们的这我们时间单词当中啊,有两个以M开头的单词呢,跟时间相关,一个叫做我们的month,一个叫minute,啊那么我的month呢,就是我们的月份了,所以这里我们说一下我们的这个大写的呀,它指的是我们的月份,而我们的小写呢,它指的是我们的分钟,哎,所以啊,这是不一样的,那么咱们月份一般也都是两位的嘛,所以我们一般呢是就是两个M,而我们的分钟呢,一般不是我们也是两位的吗?哎,我们写上一个两个M就可以了,那好了,咱们接下来写上它。
05:17
那么我们当前的这个我们的D呀,啊,就是我们的时间了啊,就是我们的时间,我们的这个小写的D和大写的D有点不太一样,为什么呢?因为这个小写的D呢,它表述的是我们一个月啊,一个月中的日期,而大写的D呢,它表述是一年中的日期,所以啊,比方说我们平时说的什么11号啊,什么31号啊,20号啊,说的都是一个月当中的日期,所以我们一般情况下用的是我们的地,用的是两位的年,这个我们一般用的少一些啊,还有一个呢,就是我们当前的这个它了啊。我们这里的小写的H和大写的H呀,都表示的是英文单词,那个小时hour是吧,都是它,但是呢有区别,区别在于我们的小写的H呀,它是我们的十二进制。
06:07
而我们大写的H呢,是我们的24进制。对吧,所以呢,这个就不太一样,那像我现在右下角的这个时间,不就是我们的二四进制嘛,对不对,哎,所以啊,同学们,我们一般情况下用这个大写的H会更多一些啊好了,接下来咱们再说下面呢是我们的S,那这个小写的S和大写的S它又不一样了,它哪不一样了呢?我们小写的S它表述的是我们的秒,但是呢,我们大写的S它表述的就是毫秒了。啊,所以呢,你就会发现我们的一些字母啊,它表述的含义就不一样,哎,老师,那现在你想把我们的时间转换成什么样的格式呢?我就想把它转换成当前的年月日、十分秒啊,所以说我就在这个地方传一个参数,传什么参数呢?叫四位的年,然后呢,我一般会加一个横线,然后呢,再加上一个两位的月,再加上一个两位的日期,我们叫做年月日,对吧,然后呢,我加个空格,后面就是十分秒,这个时间呢,我希望是我们的小时是24进制大写的H,然后呢我们的分钟小写的M,然后呢我们的秒,再写上一个它。
07:22
然后呢,再写上一个点,我们写上SSS就可以了啊,你这么写就行了,写完了以后我就想把当前的时间做成一个格式化了,那怎么做格式化呢?SDF点我们叫format form的话,你把我当前的时间传过来就可以了,传过来以后,那么这样的话,我点一下咱们叫做VR回车,回车以后这就是我们的一个date format的使string字符窗,叫日期格式化的一个字符窗,现在我们打印一下。打印以后,我现在把这个拿过来就可以了,好了,我现在运行一下看结果啊,运行以后我相信呢,这个就能够看得懂了,年月日十分秒没有任何问题,对不对,那现在呢,就是我们的820了啊,820就是我们的毫秒了,同学们你不加也行啊,你不加它也没问题,但是年月日十分秒没有任何的问题,哎,老师,那你现在能够把一个日期格式的对象转成字符串,那你反过来能不能把一个我们的字符串转换成我们的日期对象呢?其实也可以,这里咱们说一下,咱们当前呢,是把一个我们的日期给它转成了一个我们的字符串,但其实我们反过来也可以把我们的一个字符串给它变成一个日期,也是完全可行的,只不过呢,你的这个字符串的格式要符合咱们这个格式,那为了简单起见呢,咱这就别整那么复杂了,把它去掉。
08:49
去掉以后,同学们看一下来,我们写上咱们叫做字符串,我们就叫做什么呢?叫data string,然后呢,我们等于什么呢?我叫2022,然后呢,0601,好了,写完了以后,那必须呀,我们的格式是年月日,你也是年月日,你们的格式是相同的,相同的情况下,SDF点它有个叫pass。
09:11
这个pass呢,就叫解析,它来解析字符串嘛,所以就把字符串解析一下,解析以后我们点一下VR回车,它返回的就是我解析之后的日期对象,所以这样的话就没有任何的问题了,好了我们拷贝一下,我们现在给它来打印。行了,那我们运行一下看结果,你会发现结果上应该没有任何的问题。这个时候就是我们当前的6月1号,对吧?没有任何的问题啊,同学们好了,那么我们日期的对象的构建其实就是这样,那么除了我们当前给大家演示的这些方法以外,还有一些方法大家看一下,如果当前你有一个date对象的话,那么我们的date呢,可以有一个方法叫set time,什么意思啊?这个方法表述的含义就是说,我可以按照你给定的时间戳转换成一个指定的日期对象,你现在不是new吗?这个new只能取得当前时间,而我想要的是指定时间。
10:08
所以我们就说一下来,根据时间戳。构建指定的日期对象,这个在某些场合下用来做时间的计算是非常方便的啊,咱们写上叫system,点我们的current,哎,就是它其实啊,就是把时间戳变成我们的时间,就是这个道理啊,这个大家知道就可以了啊,到时候用的时候我们自己去用啊,好把这个呢给它做掉,做掉以后我们这里还有我们点一下点,其实我们可以set,还能get,我们叫get我们的time对吧,获取时间戳,所以呢,写上它啊,咱们叫获取时间戳诶就可以了。行了,那我们再看看还有没有别的什么办法呢?来我们看看好了,把这个写上D点,我们再写上它,它里面有个什么before啊,有什一个什么after啊,它可以判断两个时间谁在前谁在后,诶咱们可以判断一下,我们刚才不是有个时间叫做什么呢?叫passate吗?我们这里不有个时间是当前时间吗?我们当前时间肯定是晚于这个时间的呀,所以我们就来写上它,把这个先注掉啊,注掉做掉以后我们写上叫做打印。
11:13
我们叫做我们的proate啊,它应该早于就是before before,我们当前的date就是这样啊,咱们的那个D就可以了,好,写完以后我们运行一下看结果啊,这个应该是true,应该是没有问题的啊,来它应该是true,但是呢,我如果写上一个来,我们叫做after,叫做后,什么意思啊,解析后的6月1号,它晚于我们的当前时间,不对呀,咱们现在都已经是十月份了,对不对,所以我运行一下,运行以后看结果,你就会发现我们当前的这个值,你看它就是false,所以啊,我们可以做一些时间的判断,也是非常不错的。好了,同学们,那咱们继续了,咱们写上到D点,我们叫get,诶,你会发现我们有这么多的方法加了横线,这什么意思呢?怎么我得到一个日期对象还不让我得到它的年和它的月呀,还有什么分钟不让得到呢?这是因为这些方法现在已经可以用另外一个类来方便的获取了,那个类就是我们后面要讲的日历类,我们日期类就先讲到这里。
我来说两句