00:00
大家好,我是海波老师,接下来我们继续给大家讲解我们Java当中的日历类,其实啊,我们的这个时间的这个操作呀,在咱们实际开发当中啊,用的还是比较多的,所以啊,我们的这个日期类呢和日历类呢,需要大家下来呢,把这个方法呢稍微的记一记啊,那么接下来呢,我们就给大家做一个和日历相关的一个小练习吧,那么我们这个小练习呢,我们就拿过来我们拷贝,拷贝以后呢,我们写上一个下划线,我们叫做test,点击OK。我们现在呢,干嘛呢,我就准备啊,把我当前这一个月的日历呢,给我打印出来,所以我们说一下,咱们叫打印当前的日历,什么叫做当前日历啊,同学们很简单,就是我当前我们右下角的这个日历,我想打印出来,把我们的123456日啊给我打印出来,就这么简单啊,把它的每一个值都打印出来,按照我们的这个顺序就是这样,诶老师,那这个该怎么打呢?那其实我们就照猫画虎呗,他有什么咱们尽量都有什么,不就完了吗?首先我们先打印第一个。诶,我们打印第一个,第一个当中我们写上它,它不是我们的什么123456日吗?咱们写上周一好了,然后呢,写上一个斜杠T,咱们就type键是吧,然后呢,我们拷贝拷贝周二周三周四周五周六周日对吧?诶好了,现在呢,我稍微改一改啊来,咱们写上它,我们叫周二,这里我们写上叫周三。
01:21
这里我们写上他叫周三,这个呢,我们写上周四,然后呢,我们写上周五,周五啊周六行了,然后呢,接下来这个呢,就是我的周日了,对吧?好,写完了以后,同学们,我先把咱们的日记对象先取到。咱们叫做calendar OK点叫get instance,然后呢,我们点一下VR回车,同学们要记住了啊,我们当前的这个表示什么意思呢?就是我当前时间,咱们叫做no,来这里给大家解释一下啊,就来咱们说一下叫做获取当前日期的日历对象,把我们今天这一天啊在日历上是什么样子的,给我把这个对象取到,我得到的就是它,所以说是个那就是这样啊,但是呢,不对呀,为什么呢?你要打印的是我右下角的这个日历啊,那么这个日历呢,我们打印完周一周二周三周四周五之后,你得把这个什么1234567全打印出来啊,那所以呢,你得知道这个一在哪打印吧。
02:20
所以啊,你光拿到我们当前的这个28是不行的,你得拿到我的一号在哪一天,然后以此呢往下去打印就可以了,所以呢,我们这里的操作一下干嘛呢?把日历对象设定为当前月的第一天,对吧?你得知道第一天在哪打,你后面就一个一个打就完了嘛,所以说你得知道第一天。所以这第一天呢,我们就来nor,哎,那我就别叫nor了吧,我叫什么呢?叫first date对吧?然后呢,For date呢,我们点一下,记住我们点,点了之后呢,我们set一下,我们叫做calendar,点我们叫做day of month,给他一个一,大家还记得什么意思吗?
03:02
这个就是我一个月中的第几天,哎,我年份不变,我月份不变,我只把天变一变,变成我的一,那这样的话就是我们当前的10月1号了,那么你把它设定完了以后,我10月1号就找到了,好了,第一天我已经找到了同学们,那我这一个月总共有多少天,我得知道吧,为什么呢?你从第一天开始,你要循环的把每一天打印出来的话,你是不得知道循环的次数啊,所以我们这里写上它叫获取当前月。最大的日期。那这个怎么获取呢?其实也非常简单,你把这个first date我们拿过来,我们叫做点它有一个方法叫get,我们的max,诶,获取最大,这个最大呢,我们给它一个calendar啊,然后点一下,有一个叫做我们的day of month,这一个月的天啊,最大是多少啊,那所以呢,我们就来写上它,写完了以后我就写上了啊,咱们叫做mada。
04:01
对吧,诶我们这么写就行了,那其实不用说了,我们十月份可能是31天嘛,所以这个应该是31没问题,那这个呢,应该就是我们的10月1号了,对不对,哎,没问题啊,行了,同学们,那这个咱们都有了之后,我们不就可以开始循环了吗?所以我们循环便利来,我们从第一天开始,我们的int I等于零,然后呢,我总共循环我的什么31次呀,所以我们的I小于我们的max day就行了,然后I加加,I加加就可以了啊。行了,那我准备把我的第一天开始去打印它了啊,但是我打印的时候同学们有一个问题想一想。我打印我的第一天的话,大家想想你第一天是星期几,你的知道吧,为什么呢?因为前面都是空啊,还有我是不是得显示出他当前的这个一出来,所以现在有两个事儿需要知道,第一个就是我当前。我们的日期它是周几对吧,周几还有一个就是当前我们的日期它是几号,这个咱们是不都知道,那这个我们都可以取到啊,所以呢,把我们当前的这个first date我们拿过来,拿过来以后点一下我们叫做get get以后我们写上CAL cendar,诶点一下我们就叫day of week。
05:18
行了,写完了咱们点一下好了,当前你是我们的这一周的周几的话,咱们叫week是吧,咱们的week NX吧,嗯,好了,那么当前日期是几号呢?这个咱们也有啊,所以拷贝拷贝以后那几号不就是一个月当中的第一天吗?所以咱们叫做month。然后呢,在这里我们就写上它,诶我们写上它叫做month,我们的Y,诶咱们这么写就可以了,一个是我的周几,一个是我的几号,这不就行了吗?好,同学们,那现在我们就准备去打印它了,但是比较特殊的是什么,我们的一号前面要空几个呀,你别的都不用空,你别的就挨个打就行了,打完一打二,打完二打三,哎,对了。
06:02
所有的周日是要回航的吧,就是说到了周日需要换行,如果你不是周日就不能换行,还记得我们之前那个LN吗?对不对?所以我们这里也需要考虑这个问题,所以我们的基本判断方式就是说,如果你当前是我们的周日的话,你是需要换行的,如果不是的话,就不用换行,那么好,除了周日以外,还有一个就是我的一号前面的问题,而只有一号后面都不用管,只有一号有这个问题,所以啊,咱们就区分一下什么意思呢?我写上叫if,我们的0I,它等于零,好,然后呢,写上一个else就可以了。我为什么要区分我们I等于零呢?很简单,因为我们的I等于零表示的是一号,对不对?因为循环第一遍嘛,如果你不是零的话,以后就不用管它了,所以我们就说一下,它不是一号的场合,那你不是一号的场合,你只需要判断你是不是周日就可以了呀,如果你是周日怎么办,你不是周日怎么办,对不对?那好我们来说一下。
07:02
不是一号的场合,我们写上一服。括号,我想知道你是周几,那你是不是周日啊?我怎么判断呢?很简单,你把这个VX你拿过来,如果它等于我们的calendar,有一个叫做点,咱们叫做什么呢?Sandy。你就表示的是我当前这一天,它是周日,如果是周日的话,同学们不要忘记我们直接来打印我们几号就行了,但是我们要加上LN,所以我写上叫month,诶咱们叫month y就可以了。如果你要不是我们的周日呢,I else,对吧,那这样的话就简单了,为什么呢?我不用换行了呀,你不用换行的话,把这个拷贝一下,这时候我们需要把LN去掉。那么除了这个以外,因为我们前面啊是用tab键隔开的,所以我这里呢,也需要打印一个tab键,所以把这个去掉,我们打印一个斜杠T就行了,哎,就是这样的,哎,不对,我这里忘了写了,咱们叫斜杠T,把那个ta键给它打一下。
08:03
好了同学们,那么我们现在呢,就有了呀,所以我运行一下看结果,运行看结果以后,诶老师呀,不对呀,你现在怎么全都是一,这个是为什么呢?这里给大家解释一下,这是因为啊,我们当前的场合当中,你每一次循环的是同一天。对吧,因为你当前的时间你没有变,那么也就意味着你循环的是同一天呀,那不对,大家想想为什么不对,就是因为我们当前的时间是没有发生变化的,我们每一次循环都是对日历上的同一天做操作,但是应该是每一次循环我的日历上就会加一天,这就好比我们把日历过的那一天给它撕掉的感觉,对不对?那好,怎么加这一天呢?所以啊,咱们说一下。我们打印日历后啊,应该增加一天,所以呢,我的这个叫first date,应该我们来写上,点我叫A,这个A呢,我就把这一天给它加上,所以呢,我就写上calendar啊,点一下我们就叫做我们的date,哎,好,写上一个一就行了,你这么写了以后,只要你循环一遍,我们的日历就会加一天,好,我运行一下。
09:15
运行以后看结果,同学们有没有发现我们当前的这个已经是正确的,为什么呢?因为我的三号,31号都是对的,同学们看一下我当前的这个位置,31号三号都对的,但只有我们的一号和二号不对,为什么二号不对呢?是因为一号不对,为什么呢?因为一号没有打印,而且前面有什么不知道,所以啊,我们回过头来,现在就要把这个I等于零解决了。那我们这个该怎么解决呢?其实啊,同学们想想我们这个是不是也存在这个周日的情况对吧?所以我们这里写上一下,咱们叫做if括号,如果我的一号是周日,好,同学们想想,如果他当前是周日的话,他们前面有几个呀,我们的123456对不对?哎,所以我就循环六个就行了,所以我们for循环,我们写上它,然后呢,写上咱们叫int I,它等,诶不对,I我们写个勾,它等于零,写个勾我们小于六,然后呢勾加加就行了,然后呢,在这里呢,我们直接来打印啊,把这个去掉,我们写上叫做斜杠T,你这么写完以后,然后呢,我们最后再打印我的日期就可以了,好了,我们写上咱们叫做Mo y。
10:27
哎,可以了啊,可以了,那么可以了还不对,为啥呢?因为我的第一天不是周日啊,所以我们的else。那如果你else的话,后面怎么写呢?后面咱们先把它打印出来,我们先打印咱们的它拷贝。拷贝出来以后,你不是周日你不用换行啊,所以我们打印这个就行了,但是你前面有多少个斜杠T呢,对不对,哎老师啊,这个我该怎么算呢?这里就是给大家解释一下,我们为什么要判断3DAY呢?是因为我们的周日呢是一,我们的周一的是二,所以呢,我们按照这个顺序的话,它应该是我们的周六就是七。
11:04
那这样的话就麻烦了,为什么?因为我们现在是想算出来它前面有多少个对不对,可是你的周六你得到的是七,你的周五呢,你得到的是我们的六。所以大家想一想,如果是我们的六的话,前面有四个,如果是五的话,前面有三个,那我该怎么写啊,不就简单了吗?这里我们说一下咱们的这个周日啊,是我们的一,那么我们的周一啊是我们的二,那么我们的周六啊是七,那么中间呢,我就写个点点了,那所以呢,现在你想去打印的情况下,那其实就很简单了,你周六嘛,你前面空五个吗?七减去二不就是五吗?所以啊,我们把这个呢,我们拷贝一下,拷贝以后我拿过来这个地方,我就写上我们当前的VX,然后呢,我减去二其实就可以了。你减去二以后,那么你前面有多少个tab键我不就知道了吗?所以啊,我现在运行一下看结果,你会发现当前这个方式应该就行了,同学们看123456没问题吧,这就是我们的日历的一个基本的打印方式,我们只是想通过这种方式呢,给大家演示一下我们日历类的使用,你会发现方法会非常的多,用起来也非常的方便,这个同学们下来呢,可以自己试一试啊,好了,我们的日历就打印到这里了。
我来说两句