SpringMVC日期的处理

  • Post author:
  • Post category:其他




1、JAVA日期常用操作方法总结

1.Date date = new Date(); 这里date是日期格式,输出样式:Mon Oct 17 22:22:02 CST 2022

public class Text {
    @Test
    public void dateTest(){
        Date date = new Date();
        System.out.println(date);//Mon Oct 17 22:22:02 CST 2022
    }
}

2.日期格式转换为String格式,并指定样式。

使用到SimpleDateFormat这个类,这个类下有formate方法,能够将日期类型转换为字符串类型。 现在输出结果为:2022-10-17 22-25-27 667

  		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss SSS");
        String formatedDate = sdf.format(date);
        System.out.println(formatedDate);//2022-10-17 22-25-27 667

3.将字符串转为Date格式

应用场景:实体类比如学生,要存储生日肯定不用字符串存,要存入日期格式的怎么办?

—–直接 simpleDateFormat.parse(“2000-01-01”);

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss SSS");
        //Date date = sdf.parse("2000-01-01");
          @RequestMapping("/list")
	    public String list(HttpServletRequest request) throws ParseException {
	        Student stu1 = new Student("张三",sf.parse("2000-01-01"));
	        Student stu2 = new Student("李四",sf.parse("2001-08-11"));
	        Student stu3 = new Student("王五",sf.parse("2002-09-21"));
	        List<Student> list = new ArrayList<>();
	        list.add(stu1);
	        list.add(stu2);
	        list.add(stu3);
	        request.setAttribute("list",list);
	        return "show";
    }



2、SpringMVC中的日期数据传递

现在模拟从index.jsp中传一个日期给服务器,服务器再将该日期传给一个前端页面。



1.第一种方法:单个日期的来

主要使用了 @DateTimeFormat(pattern = “yyyy-MM-dd”)注解,注意这个注解也只是将前端传过来的字符串转为日期类,并没有格式化!格式化还是需要用到SimpleDateFormate

前端:

<form action="${pageContext.request.contextPath}/date.action">
        日期:<input type="date" name="nowDate">
        <input type="submit" value="提交">
    </form>

controller:服务器

@Controller
public class DateAction {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    @RequestMapping("/date")
    public String date(
            @DateTimeFormat(pattern = "yyyy-MM-dd")
            Date nowDate 
    ){
        //System.out.println(nowDate);//Thu Oct 20 00:00:00 CST 2022
        System.out.println(sdf.format(nowDate));
        return "/showDate"; //自动拼接前后缀,一定记得加 /
    }
}



1.第二种方法:全局的日期处理注解

controller中对应后端代码如下

//第二种:注册一个全局的日期处理注解
    @InitBinder
    public void initBinder(WebDataBinder dataBinder){
        dataBinder.registerCustomEditor(Date.class,new CustomDateEditor(sdf,true));
    }
    @RequestMapping("/date")
    public String date(Date nowDate, HttpServletRequest request){
        System.out.println(sdf.format(nowDate));
        //复习五中数据传送的方式request其中之一
        request.setAttribute("globalDate1",nowDate);
        request.setAttribute("globalDate2",sdf.format(nowDate));
        return "/showDate";//去这个页面使用${globalDate}el表达式取出来
    }

前端获取数据:

	按日期格式传过来的日期是:${globalDate1} <br>
    按字符串格式传过来的日期是:${globalDate2}



3、使用JSTL

遇到这样的情况:从数据库那边获取了 学生 对象 的集合,学生对象中生日属性的格式是日期格式。

使用jstl处理,前端这样处理:

其中:

  • ${stu.birthday} 直接拿就是Mon Oct 17 22:22:02 CST 2022 这样的格式
  • <fmt:formatDate value=“${stu.birthday}” pattern=“yyyy-MM-dd”> 这样就转为了年月日的格式
<h2>学生集合</h2>
<table width="800px" border="1">
    <tr>
        <th>姓名</th>
        <th>生日</th>
    </tr>
    <c:forEach items="${list}" var="stu">
        <tr>
            <td>${stu.name}</td>
            <td>${stu.birthday}------ <fmt:formatDate value="${stu.birthday}" pattern="yyyy-MM-dd"></fmt:formatDate> </td>
        </tr>
    </c:forEach>
</table>



版权声明:本文为YiGeiGiaoGiao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。