00:00
那接着咱们前一天这个内容呢,往下来说,咱们还接着来说这个日期和时间的API,首先呢,还是关于这个GDK8之前的这个日期时间的API,咱们呢,讲了其中的,呃,算是两个吧,啊,第一个呢,其实是一个方法啊,就是我们这个system.current minutes这个方法,第二呢是关于这个date类的使用,然后我们说这个第三个叫simple data format。这个呢比较长一些,这呢涉及到叫date format,叫日期的一个格式化。啊simple啊,简单的一个日期格式化,你可以这样来理解,那么我们知道这个data类里边的API呢,是不利于国际化的,就是里边我们看到这些其实很多都是一些英文的描述了,那针对于具体国家呢,我们希望有针对于具体国家的一些这个实现方式或者操作方式了,嗯,那这呢说大部分的API呢,已经被deprecated了。咱们看了一篇呢,也看到了,说呢这里边儿我们就引入了一个结构叫simple data format,它呢是一个不与语言环境有关的方式来格式化和解析日期的具体类。
01:05
啊,还是有点抽象,主要我们还是关注于它的功能,通过功能呢,大家回来再去看这个意思,Simple data format,说白了我们就可以对我们的这个date类呢进行一些操作,这些操作呢,涉及到的叫格式化和解析,诶咱们直接呢通过代码呢来看啊,那这呢,咱们在这个Java下边去新建一个啊,还是关于咱们这个叫日期时间的啊,我写成叫date和time的一个测试。啊,这个呢,仍然是咱们JDK8啊,之前的日期时间的这个API测试行,那前面的话呢,咱们算是已经说了两个了,第一个呢,是关于system类中的叫current time minutes啊,这是第一个啊,第二个关于我们Java点。U下的date和它的子类。
02:03
Circle下的这个data就过了,然后下边呢,我们来说这个第三个就是simple data format这个类的使用,这个后边呢,我们再说一个叫calendar啊,那么关于JDK8之前呢,我们就再说这两个就可以了,首先来说这个叫simple data format。它的一个使用啊,这个呢,用一句话来介绍,我们就相当于c data format,它是啊这个对啊,日期这个日期呢,我们目前主要说的date啊,对日期这个date类。啊,格式化和解析。啊说了我们这个data呢,不利于这个国际化啊,那么这里边儿呢,就提到两个操作。大家呢,掌握这个s data formit呢,就关注于两个事就行了,诶第一个呢,就是它的两个功能哈,就是两个操作了,两个操作的话呢,就是对应我们刚才写到的,第一个呢,叫做格式化,嗯,然后第二个呢,叫做解析啊,什么意思呢?这个格式化呢,我们能做的事儿就是能够将一个日期转化成我们指定格式的字符串。
03:15
哎,指定格式这个字符串了,就是相当于从一个date呢变化成一个string了,那么解析呢,是我们格式化的逆过程。嗯,那就意味着是从这个字符串。转换为咱们的啊日期,那么有的时候呢,我们就需要一个日期型的一个变量,那么我们得能够把指定的这个写成字符串格式的一个年月日,哎,转化为一个这个date类型的,诶我们在很多开发的场景当中呢,会用到一会咱们讲完这个以后呢,给大家去举例啊,这是关于它的两个操作,那这两个操作的话呢,我们都是使用的这个simple data的format这个类来完成的,那人家这两个方法呢,都是非静态的,那就意味着我们首先需要掌握的就是它的一个是不是实例化呀。
04:05
你得知道怎么造对象,那有了这个对象以后,你才可以再去调人家这个格式化和解析的方法去做,行,那咱们下边呢,就来演示一下这个具体的过程。哎,Test这个simple data form。你别看它这个这个这个累特别长啊,这个感觉就很难一样,没这个关系啊,那string呢,还短呢,那string里边那东西多少啊是吧,那么SIM data form,首先我们关注的就是它的一个实例化。这句话我们的SIM的form造对象啊,造对象的话呢,我们最直接的就是直接去new啊,New一个它out斜杠,诶它还确实有一个空参的构造器,那我们就先用这个空参的来说明啊,Alt enter一下,我叫SDF吧。
05:02
好,这呢就得到这个对象了,先是一个空单的方式,行,拿到对象以后,咱们说能做什么事呢?说第一个过程叫做格式化日期。哎,格式化咱们相当于能够把一个日期转换为一个字符串行,首先呢,咱们去new一个date,注意这时候呢,我们这个日期呢,Date主要指的还是我们这个U下的data,那U下data都满足了,它的子类呢就更满足了。多态的形式嘛,Al enter,我们是U下的,那我们就生成一个对象,行,这是它,那这个date呢,我们先s out一下,这个呢并不陌生,打印出来的这个数据,就是咱们当前的这个时间,你看他长的是这种格式的,里边还是英文的,在咱们这个中文场景下呢,有的时候一些人他不太懂这个单词什么意思了。嗯,那下边呢,我们就对它呢进行一个格式化啊,嗯,这个咱们就不看了,现在的话呢,我们使用这个叫SDF,就是SIM的form的对象格式化,格式化这个单词呢,叫做formit。
06:08
这个for的单词翻译过来就叫做格式化,那我现在呢,需要给一个date呢进行格式化,所以我就调这个方法,把date呢就扔进去。Alt enter,返回的就是一个字符串,格式化以后,以后的这个字符串form点我们去输出一下,那把这个打开,我们对比一下它们二者的区别。好看到了,这个呢,就是咱们这个date的一个输出,相当于吐人方法,这个呢是咱们返回的字符串啊,这个能看到这个年月日上午的11点多,这个呢是在我们我们这个中文的系统下啊,你就能够更清晰的去表示了。哎,这呢就叫做格式化啊,这时候注意啊,咱们得到是个字符串了。啊,可以是吧,那这个清楚以后,这个清楚以后的话呢,我们接着呢,呃,可以再谈另外一个事儿,就是格式化的对应过程,叫做解析。
07:05
啊叫做解析。解析呢,说是能够将一个字符串给它,再转换为一个日期。把这个字符串呢,转换成成一个日期,那你首先是不是得先得有个字符串啊,哎,字符串IR等于。把这个字符串呢,改成一个指定的一个date,那这里边字符串你说它有没有格式上的一些要求啊,嗯,就有了,因为你这块你想你要是,呃,比如说有的有的这个同学呢,可能会这样想,我写一个比如2019啊杠,这个0809。诶诶杠0809。这呢是一种写法,那有的人呢,可能说,哎,那我就愿意先写日,后写月,再写年。那你你想怎么写就怎么写,那对于咱们程序来讲,它可不一定都能识别。
08:01
你比如说我这块就这样写的,我这样写完以后,咱们现在呢,想解析解析呢,还是拿咱们这个simple data format的这个对象去调方法。所以咱们讲完面向对象以后,其实主体上就是看哪个类能干什么,造对象调方法啊,这么简单粗暴的这种操作啊,那么解析掉的叫pass。Pass死,然后呢,告诉我这个字符串,然后我给你返回一个date,这不叫解析吗?诶把IT2呢扔进去,哎,然后呢,解析这块呢,会抛一常就是怕你传的这个字符串啊不靠谱,我们给它做一个throws啊,然后在这al enter al enter,哎,得到一个date,我叫DATE1吧,然后呢,我把这个DATE1呢去输出一下。行,跑一下。你看挂了。相当于我们这个呢,确实抛异常了,抛异常呢,就是咱们这个刚才这个pass exception说呢,我们不知道你这个写的是什么。
09:06
就这意思,就是你写的呢,是这个样子的,那我我识别不了不认识。啊,所以这里边有要求,那怎么就认识了呢?哎,你看看啊,这个呢,其实有个参考它呢,把一个date。他把一个data转化成一个字符串的时候呢,它识别的你看是不是长这个样子。啊,那其实呢,就相当于这是它的一个默认的一种这个格式化的方式,那你解析的时候呢,它也就广认这种格式,所以你写的时候呢,也得写跟它这种格式呢,诶类似的这种格式,那这个位置呢,我们就把它删掉啊CTRL一下得用这种格式,这个时间呢,你在这个基础上你改一改,这个无所谓,比如说你改成12月了,这这都没事儿,但是整体这个格式呢,得长这个样子。哎,这个格式的它是可以识别的啊,你看再来。
10:01
你看这时候就不报错了,哎,这不是一九年的,这个是,呃,12月是吧,哎,星期38号这个样子。所以说通过刚才咱们这个写法总结一下。就是我们这时候的格式化解析,呃,它其实有一个要求,尤其是这个解析哈。啊,这先说格式化吧,这个格式化的话呢,你看咱们出来这个这个这个数据的格式呢,长这个样子,这个格式呢,咱们现在控制不了人家这个默认行为就是长这个样子,然后呢,你要是反过来去解析的话呢,他也只能够解析这个样子的。理解吧。这是它的一种默认行为,那很多时候咱们开发中呢,都不喜欢用它这种默认行为,就是它这个格式呢,很多时候呢,不灵活啊,我们想灵活点去显示怎么办呢?那这时候呢,就涉及到你就别用这个默认的构造器了啊,这是相当于咱们实例化,这呢使用哎默认的这个构造器啊,那么我们就使用另外一个带参数的构造器去new一个叫sample data form me CR out,斜杠发现呢,它会有这种像这种格式的string性的pattern啊,就是你指定一个格式,那我就按照你指定的那个格式呢去写这种字,那格式怎么写。
11:23
CTRLC找一撇。CTRLV进来。这呢,关于它的使用往下走啊,就告诉我们有好多这个符号,每个符号呢表示的是什么意思,这都写了啊,怕你不懂,后边呢还举了几个例子,这呢就是你这个pattern长这个格式样子的啊,它输出的结果呢,就长这个样子的啊,长下边这种了啊,就输出的就下边这种了,这咱们就随便挑一个吧。就拿这个举例子吧,我CTRLC一下。哎,我们双引号进来。
12:02
这是咱们从API里边粘过来的,那么根据这个这个格式al enter,咱们生成一个simple data form1啊这样的一个对象了,啊,那么拿到它以后,接下来呢,我们再接着去做这个格式化的操作。一点,嗯,做这个format。哎,咱们调这个这个咱们上面有一个date了啊,如果还用这个date吧。嗯,然后再out一下,那这个FORM1,然后看一下这个FORM1,第2s out来执行。哎,大家看。咱们呢,刚才使的是这种格式的啊,你看它出来的就这种效果了,那就出来是这种效果的了,嗯,那就看你想要哪种,你想要这种它就出来这种,那咱们开发当中呢,呃,这个一般的像这种公园啊啥这这都不爱写了啊,所以这块呢,我把这个注释掉啊,那我先复制一份,然后把这个呢就注入掉了,咱们呢开发当中啊,说一下几个常用的这个字符,就是年的话呢,是用Y来表示的年,咱们通常现在是二零几几年都是千位的啊,我就写四个Y。
13:21
然后呢,这个月的话呢,我们中间有个杠习惯上月呢叫month month呢写小M呢,其实会有一点歧义了,因为那个分钟诶minute也是M,所以这块呢,我们就规定这个大写的呢是一月份,那月份的话呢,可能会有两位,就十月啊,十一十二啊,所以写2M,然后呢,呃,天天就是D呗,DD是吧,然后空格一下十分秒。这是不是就看到了。十就是hour,分是minute秒,Second。S最多你有59秒呗,59秒不就是也是两位数嘛,所以我这都这样写啊,写了两位,那么这种情况下我们再执行。
14:12
那是不是就我们得到的是这种格式的了?哎,年月日十分秒。诶,这个样子。那么咱们开发当中呢,通常都不爱用它这种默认构造器啊,不灵活,我们呢,都使用咱们指定的这种格式的,那这个呢,就输出是这样的一个效果好,这呢对应的这不叫格式化吗。哎,格式化啊,相当于咱们这块呢,就是指定的这个方式进行格式化啊。呃,方式啊,格式化和解析主要呢,体现就是我们调用的是带参数的构造器啊,这个怎么能实现呢?就是调用这个带餐的。
15:00
哎,构造器哎就可以了,哎,这是咱们主要开发中用的方式,这种呢就不用了,大家了解一下就行,那么这是格式化下边解析。那解析就是它的一个逆过程,那解析呢,还是用SDF1,咱们去做一个pass的操作,Pass里边呢,我们把这个字符串传进去,这个字符串呢,就是我们上边这个得到的这个这个字符串,或者说你再重新换一个也行啊,我CTRLC在这个位置,我们重新指定一个,但是这时候呢,要小心点,就是它对于SDF1来讲,它只认这种格式的,所以你这里边传的这个字符串呢,也得跟他匹配上。这一定要注意,比如我这改成2020年的,哎,这么着,然后al enter一下就生成了一个date了。就是相当于把这个年月日十分秒字符串格式的,我给你转化成对应的那个date啊,然后DATE2第二还一下。
16:02
执行,哎,你看这时候呢,这就得到了2020年的这个,这呢,注意是个date对象了。哎,我们把这个呢叫做解析。叫做解析,从这个字符串到日期。好,那么关于我们说的这个simple data format的这个核心内容呢,咱们就讲完了。哎,就是这样子的。大家一定要注意的这个点哈,刚才我们说过了,这个里边呢,可能会抛一个异常,会抛这异常就是因为他对你写的这个字符串呢不识别,嗯,就是一定要小心的,就是我们造的这个simple data访面的对象,它只识别你这个代餐呢,就只识别这种格式,这个呢是空参,它就有默认的,默认的它就认为它识别是这样格式的,那就要求你传的这个字符串呢,得满足它的这种格式。啊,不满足就会爆异常啊,这个解析数在这写啊,说要求我们的这个字符串啊,柏须是符合,哎,咱们sample data format的识别的格式,这个格式呢,就是通过这个构造器的型参来体现的啊,这个写一下通过构造器啊这个参数体现,那么你要没有这个构造器参数呢,那就是默认的情况了,提现这个要符合这种格式,否则。
17:34
否则呢,就会抛异常,诶这个要小心一点行,那关于这个SIM的form的这个类的使用呢,我们就说完了,诶需要大家呢能够掌握这里边的格式化和解析,主要呢,就用这种方式就行。
我来说两句