当前课程知识点:软件开发实训--动态网站开发 > 8 用户管理功能实现三 > 8.3通用日期处理 > 8.3.1通用日期处理
同学
你好
欢迎回到软件开发实训课堂
前面我们已经将用户信息的处理基本上
讲完了
但是细心的你是不是已经发现
我并没有对日期进行处理
那么这节课我们就来看一下
日期该怎么来处理
在前面我们并没有对出生日期进行处理
那么日期它处理起来比较特殊
它不像其他的数据那样直接用就可以了
而日期需要进行转换的
那么为了处理日期
这里边我们来看一下
首先我们打开这个实体
user这个类
来看一下birthday
birthday
我们定义的类型是Local Date Time
实际上出生日期我们只需要到日期就行了
不用这个time
也就是说我们不需要时间
只需要到日子就可以了
所以把类我们更换为Local Date
同样的
把下面的错误都给纠正一下
换掉我们的类
修改完我们的实体以后
我们去界面打开
这个模板我们添加出生日期的填写
就在姓名的后面
我们来填写
加一个DIV
形成我们的表单组
输入birthday的信息
出生日期
它的输入类型
我们用date就可以了
我们绑定的字段
birthday class等于
form-control
这样我们在界面上也就有了出生日期
这样加上以后它是否能执行呢
我们来看一下
启动我们的应用程序
这个时候我们已经将出生日期加到里面了
但是我们在输入信息后是否能够正确地
执行呢
我们来看
提交
没有提示
我们来看一下后端的消息
在我们的开发工具的输出日志里边
最后一行出现了Field error
那么字段错误
哪个字段这里给出了birthday
他说拒绝这个值
我们给出的日期格式是正常的
但是却得到了拒绝
这个原因就是类型不匹配
那么这样的问题我们就需要对日期进行转换
这是他的错误消息
他告诉你错误是企图
转换这个值
但是失败了
那么遇到这种情况怎么办
在spring boot里面
咱们可以定义一个自定义的配置类来完成
对日期和字符串的转换
好
我们在报名上点击右键选择新建Java类
类名呢我们就叫做
Web Configuration
包我们就可以放在与
application放在一起
或者你可以自己创建一个Configuration这样的包
创建完类后
我们给它加一个注解
Configuration
这个注解spring boot会自动
去加载我们的配置文件
而不需要你自己去再做其他配置
然后让我们的配置文件去实现Web的配置接口
要注意对于新版的java不需要用适配器
因为新版的Java支持接口里提供默认
的方法
所以spring boot spring mvC
按照这种方式
将配置的接口定义成了默认的方法
因此我们不需要实现他任何方法就可以
实现它
但在这里
我们需要实现字符串与日期之间的转换
我们需要加一个方法来复写他的方法
在空白处
我们点击右键
选择插入代码
然后选择菜单里的覆盖方法
找到我们的转换添加
我们来看一下
对于转换添加
我们这里需要复写addFormatters
格式
这是一个格式化器的注册方法
现在我们来编写
参数是一个注册类
我们通过它来注册相关的格式化器
看一下
这个对象它提供了add converter
add converter呢
是添加转换器
但对于日期来讲
我们可以增加一个格式化器
因为在java八以后
他提供了相关的日期和时间之间的一个
格式化
我们用起来也是比较方便的
好
调用这个方法
并传给他一个匿名类匿名对象
注意他需要范型
那么范行你要注意
他提供的范型类型就是你要转换的字段的
类型
我们转换日期字段
它的类型是LocalDate
所以呢
我们这里就填写范型类型为
LocalDate
然后我们去实现
它相关的方法
导入需要的类
这个formatter注意是spring提供的风曼
formatter
而不是java提供的
导入完成后
我们实现抽象方法
这个时候他提供了两个方法
第一个print是用来把日期转换成
字符串
第二个方法pass
是把字符串转换成日期
好
我们删掉它默认的在print方法里
我们首先来建一个格式化器
它的格式化器叫date time formatter
我们直接用他的工厂方法来实例化它
ofpattern
这是一个模式
我们提供一个日期转换的模式
四个Y表示年份
大写M两个表示有前到零的月份
最后日期
因为localdate只到日期
所以不需要考虑时间
好
格式化器定义完成后
我们直接去格式化我们的数据
这样我们就写好了
将日期转换成字符串
我们加上注释来说明一下代码
定义一个
格式化器对象
这个对象它能够把日期转换成字符串
也可以把字符串转换成日期
调用格式化器的formatter方法
把日期转换成字符串
这个print方法是将日期转换成字符串
第一个参数object
就是日期
第二个是本地化数据
就是你转换成我们当地的时间
好
第二个方法
解析器
它是把字符串转换成需要的日期数据
这是text
格式一定要注意为2019-01-02
这样的格式的字符串
这也是本地化对象
就是用本地化的格式来转换
返回我们说它返回的是日期数据
如果说你提供的日期格式有问题
那么转换时会发生异常
格式不正确
抛出异常
那么我们看一下怎么来解析
实际上这个我们就直接用
localdate
Java8之后
提供日期和时间的处理类相当的丰富
而且很统一
每个类的操作几乎是一样的
好
我们来看调用它的pass方法
pass
它有两个
你看一下这里的格式
它也告诉你了年月日这样的格式
然后转换的时候呢
使用的是ISO localdate这个模式
这对于我们来讲
我们需要的就是ISO localdate
本地化日期
所以我们也不需要第二个参数了
就直接转换我们的字符串就可以了
这样我们得到的就是我们解析好的
这个日期数据了
现在我们保存
这是调用pass方法
把字符串解析为日期对象
打开浏览器
我们重新输入数据
点击保存
我们来看一下
它已经提示保存成功
说明我们的日期已经进入到数据库了
我们可以打开数据库的命令行工具
去表里面看一下
选择数据库
查询数据
看一下最后一行
已经出现了20190605这样的日期
因为我们用的是localdate
所以他没有时间
因此在数据库里表现的就是000000
好
这是出生日期的
处理
当然我们可以在界面上把它也显示出来
那么经过这样的转换显示
会不会有问题呢
显示出来就知道了
u.birthday我们刷新
会看到出生日期已经正常出现了
好
这就是关于通用的日期的处理方式
我们就讲完了
下节课我们再见
-1.1课程介绍
--1.1.3随堂测试
-1.2网站需求分析
--1.2.4随堂测试
-1.3网站首页分析
--1.3.3随堂测试
-1.4导航菜单分析
--1.4.3随堂测试
-1.5内容区域分析
--1.5.3随堂测试
-1.6内容副页面分析
-1.7编写需求文档
-2.1后端页面总体分析
--2.1.3随堂测试
-2.2用户管理功能设计
--2.2.3随堂测试
-2.3内容与分类功能分析
--2.3.3随堂测试
-2.4网站配置功能设计
--2.4.4随堂测试
-2.5数据库及表结构分析
-总体设计文档
-3.1前台模板约定
--3.1.3随堂测试
-3.2网站配置接口设计
--3.2.3随堂测试
-3.3菜单接口设计
--3.3.3随堂测试
-3.4内容接口设计
--3.4.3随堂测试
-3.5幻灯片接口设计
--3.5.3随堂测试
-补充设计文档
-4.1用户管理功能设计
--4.1.3随堂测试
-4.2菜单管理功能设计
--4.2.3随堂测试
-4.3内容管理功能设计
--4.3.3随堂测试
-4.4网站配置信息设计
--4.4.3随堂测试
-完成设计文档
-4.6随堂测试
-5.1开发环境搭建
--5.1.2随堂测试
-5.2Web前端环境搭建
-5.3创建用户实体
--5.3.2随堂测试
-5.4用户实体表创建与初始化
--5.4.2随堂测试
-5.5用户数据访问接口实现
--5.5.2随堂测试
-5.6环境搭建问题
-6.1用户服务层接口实现
--6.1.2随堂测试
-6.2用户列表和编辑控制器实现
--6.2.2随堂测试
-6.3用户存储和删除控制器实现
-6.4用户添加、编辑界面实现
-6.5用户管理添加用户调试
-7.1用户查询模板实现
--7.1.2随堂测试
-7.2用户信息编辑的实现
-7.3单个用户删除实现
-7.4多个用户删除实现
-8.1用户列表分页基本实现
-8.2用户列表查询结果分页实现
-8.3通用日期处理
-8.4整型日期处理
--8.4.2随堂测试
-8.5枚举数据的应用
-9.1登录逻辑实现
--9.1.2随堂测试
-9.2登录界面及流程调试
--9.2.2随堂测试
-9.3管理主界面实现
--9.3.2随堂测试
-9.4授权验证拦截器实现
--9.4.2随堂测试
-9.5拦截器调试
-10.1分类接口实现
-10.2分类添加、编辑实现
-10.3分类树结构实现
-10.4分类删除实现
--10.4.2随堂测试
-11.1内容实体定义
-11.2相关接口定义
-11.3服务接口实现
-11.4内容添加、编辑模板实现
-11.5内容添加、编辑控制器实现
-11.6内容检索页面实现
-11.7内容分类树实现
-12.1修改UEditor相关问题
-12.2整合UEditor到内容编辑界面
-12.3UEditor图片对话框应用
-12.4文件上传问题处理
-13.1网站配置相关类实现
-13.2网站配置界面模板实现
-13.3网站配置调试
-14.1网站首页布局实现
-14.2菜单Vue组件实现
--14.2.2随堂测试
-14.3幻灯片Vue组件实现
-14.4滚动Vue组件实现
--14.4.2随堂测试
-14.5滚动接口实现
-14.6滚动接口调试
-14.7幻灯片接口实现
-15.1首页区域实现
-15.2首页内容脚本实现
-15.3首页完善
-15.4Vue组件放入单文件
-15.5详细页面实现
-16.1网站测试介绍
-16.2功能测试
-16.3打包发布
-16.4部署运行
--16.4.2随堂测试