本文已参与「新人创作礼」活动,一起开启掘金创作之路。
目录
一.日期提交处理
0.日期的格式化
public class testDate { public static void main(String[] args) { SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); System.out.println(sf.format(date)); } }
格式化之前:Wed May 11 14:57:45 CST 2022
格式化之后:2022/5/11 下午2:58
1.单个日期注入
注意:要搭配使用注解驱动
<mvc:annotation-driven></mvc:annotation-driven>
<form action="${pageContext.request.contextPath}/date"> <input type="date" name="mydate"> <input type="submit" value="提交"> </form>
@Controller public class Date { @RequestMapping("date") public String date(@DateTimeFormat(pattern = "yyyy-MM-dd") java.util.Date mydate){ System.out.println(mydate); return "main"; } }
注解是将String类型的日期注入给mydate,在形参中,每个Date类型的数据之前都必须有@DateTimeFormat(pattern = "yyyy-MM-dd"),这种方式处理时,当日期参数多了之后会变得很麻烦,所以下面有全局日期处理。
2.全局日期处理
类中全局日期处理,全局是指在一个类中
sf为刷子,true表示允许为空
加了这个注解和方法就不需要注解驱动了
二.日期的显示处理
从数据库中拿到日期,把日期显示在界面上,要使用JSTL。
1.准备步骤
Step1:添加JSTL依赖
<!-- JSTL依赖--> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
Step2:在jsp页面导入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
2.日期显示
显示单个日期
(1)直接将日期对象返回到页面,然后将日期对象改变格式
request.setAttribute("mydate",sf.format(mydate));
${mydate}<br>
编辑
日期的格式取决于格式刷的格式
(2)将日期对象在后端更改格式再传到前端,但sf.format(mydate)之后,日期类型就变成了字符串了。
request.setAttribute("mydate2",mydate2);
<fmt:formatDate value="${mydate2}" pattern="yyyy-MM-dd"></fmt:formatDate>
编辑
显示日期集合
(1)将每个日期对象都格式化,然后装到List集合中
@Controller public class Date { SimpleDateFormat sf = new SimpleDateFormat(); @RequestMapping("/date") public String date(@DateTimeFormat(pattern = "yyyy-MM-dd") java.util.Date mydate, @DateTimeFormat(pattern = "yyyy-MM-dd") java.util.Date mydate2, HttpServletRequest request){ System.out.println(sf.format(mydate)); System.out.println(sf.format(mydate2)); List<String> list = new ArrayList<>(); list.add(sf.format(mydate)); list.add(sf.format(mydate2)); request.setAttribute("list",list); }
<body> ${list}<br> ${list.get(0)}<br> ${list.get(1)} </body>
编辑
(2)将日期对象装到List集合中,在页面利用jstl将日期对象进行格式化
@Controller public class Date { SimpleDateFormat sf = new SimpleDateFormat(); @RequestMapping("/date") public String date(@DateTimeFormat(pattern = "yyyy-MM-dd") java.util.Date mydate, @DateTimeFormat(pattern = "yyyy-MM-dd") java.util.Date mydate2, HttpServletRequest request){ System.out.println(sf.format(mydate)); System.out.println(sf.format(mydate2)); List<java.util.Date> list = new ArrayList<>(); list.add(mydate); list.add(mydate2); request.setAttribute("list",list); }
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <fmt:formatDate value="${list.get(0)}" pattern="yyyy-MM-dd"></fmt:formatDate><br> <fmt:formatDate value="${list.get(1)}" pattern="yyyy-MM-dd"></fmt:formatDate> </body> </html>
编辑
3.日期对象在自定义对象中
注意:
要在自定义对象的属性或者set方法上添加注解@DateTimeFormat(pattern = "yyyy-MM-dd")
public class Student { private String name; @DateTimeFormat(pattern = "yyyy-MM-dd") private Date birthday; public Student() { } public Student(String name, Date birthday) { this.name = name; this.birthday = birthday; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "Student{" + "name='" + name + ''' + ", birthday=" + birthday + '}'; } }
<body> <form action="${pageContext.request.contextPath}/date"> <input type="text" name="name"> <input type="date" name="birthday"> <input type="submit" value="提交"> </form> </body>
@Controller public class Date { SimpleDateFormat sf = new SimpleDateFormat(); @RequestMapping("/date") public String date(Student student, HttpServletRequest request){ request.setAttribute("student",student); return "main"; } }
<body> ${student.name}<br> <fmt:formatDate value="${student.birthday}" pattern="yyyy-MM-dd"></fmt:formatDate><br> </body>
编辑
4.JSON中的日期显示
需要在类中的日期成员变量的get方法上添加注解@JsonFormat(pattern = ""yyyy-MM-dd HH:mm:ss)
返回JSON格式的时候,要将方法添加注解@ResponseBody,然后返回对象或者集合,SpringMVC将对象或集合转为JSON格式,当遇到对象的属性是Date类型时,为了让日期显示的美观往往需要转格式,这时候需要在对象的日期get方法上添加注解@JsonFormat(pattern = ""yyyy-MM-dd HH:mm:ss)
\