SpringMVC对日期类型的转换

  在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置。

  1、如果查询类使我们自己写,那么在属性前面加上@DateTimeFormat(pattern = "yyyy-MM-dd")  ,即可将String转换为Date类型,如下

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createTime;  

  2、如果我们只负责web层的开发,就需要在controller中加入数据绑定:

1 @InitBinder
2 public void initBinder(WebDataBinder binder) {
3 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
4 dateFormat.setLenient(false);
5 binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));   //true:允许输入空值,false:不能为空值 

  3、可以在系统中加入一个全局类型转换器

  实现转换器

 1 public class DateConverter implements Converter<String, Date> {
 2 @Override
 3 public Date convert(String source) {
 4     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
 5     dateFormat.setLenient(false);
 6     try {
 7         return dateFormat.parse(source);
 8     } catch (ParseException e) {
 9         e.printStackTrace();
10     }
11     return null;
12 }    

  进行配置:

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="com.doje.XXX.web.DateConverter" />
            </list>
        </property>
</bean> 
<mvc:annotation-driven conversion-service="conversionService" />  

  4、如果将日期类型转换为String在页面上显示,需要配合一些前端的技巧进行处理。

  5、SpringMVC使用@ResponseBody返回json时,日期格式默认显示为时间戳。

 1 @Component("customObjectMapper")
 2 public class CustomObjectMapper extends ObjectMapper {
 3
 4     public CustomObjectMapper() {
 5         CustomSerializerFactory factory = new CustomSerializerFactory();
 6         factory.addGenericMapping(Date.class, new JsonSerializer<Date>() {
 7             @Override
 8             public void serialize(Date value, JsonGenerator jsonGenerator,
 9                     SerializerProvider provider) throws IOException, JsonProcessingException {
10                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
11                 jsonGenerator.writeString(sdf.format(value));
12             }
13         });
14         this.setSerializerFactory(factory);
15     }
16 }  

  配置如下:

<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
            <property name="objectMapper" ref="customObjectMapper"></property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>  

  6、date类型转换为json字符串时,返回的是long time值,如果需要返回指定的日期的类型的get方法上写上@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") ,即可将json返回的对象为指定的类型。

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
public Date getCreateTime() {
return this.createTime;
}  
时间: 2024-10-11 21:03:02

SpringMVC对日期类型的转换的相关文章

好记性不如烂笔头2-JAVA日期类型和转换

1.系统当前时间 long sysTime =System.currentTimeMillis();   //得到毫秒表示的系统当前时间 DatemyDate = new Date(); //得到当前时间 2.java.util.Date类型转换成long类型秒数 java.util.Date dt = newDate(); long sysTime = dt.getTime() / 1000;   //得到秒数,Date类型的getTime()返回毫秒数 3.由long类型转换成Date类型

SqlServer中字符串和日期类型的转换

SQL Server Date 函数 定义和用法 CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用不同的格式显示日期/时间数据. 语法 CONVERT(data_type(length),data_to_be_converted,style) data_type(length) 规定目标数据类型(带有可选的长度).data_to_be_converted 含有需要转换的值.style 规定日期/时间的输出格式. 可以使用的 style 值: 实例 下面

SpringMVC表单或Json中日期字符串与JavaBean的Date类型的转换

SpringMVC表单或Json中日期字符串与JavaBean的Date类型的转换 场景一:表单中的日期字符串和JavaBean的Date类型的转换 在使用SpringMVC的时候,经常会遇到表单中的日期字符串和JavaBean的Date类型的转换, 例如,如下代码S_ROLE_QO这个bean中包含有Date类型属性,不处理就拿不到值. /** * 分页取角色列表 * @param s_ROLE_QO 角色查询条件 * @return */ @RequestMapping(value = "/

SpringMVC如何转换日期类型

当我们从浏览器中输入2020/12/12,conroller控制类能正确接收到我们传入的日期 如果我们输入2020-12-12,就会出现400的错误 我们要怎么解决呢? 1)我们在工具类创建一个字符串转换为日期类型的类,继承Converter接口,实现日期转换 2)去spring-mvc.xml文件中添加注入bean,可能在你那不叫spring-mvc.xml文件 3)最后一步开启支持,在之前开启注解之后加上一句,固定写法 再次访问 OK,可以接收到了 原文地址:https://www.cnbl

SqlServer将日期格式DateTime转换成varchar类型

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06 Select CONVERT(varchar(100),

C# string转换成DateTime?(字符串转换成可空日期类型)

[转载] 作者:十有三 出处:http://shiyousan.com/post/ca4a6413-ecb4-4237-baf6-e88e616d18fc PS:此文主要讲述的是可空日期类型和字符串之间的转换,正常类型转换看这篇文章:字符串string类型转换成DateTime类型 最近项目中遇到以前一直困扰的问题,就是如何将string转换成DateTime?这种可空日期类型.以前总是通过编写一堆逻辑代码来进行转换,但是写这些代码感觉非常繁琐.后在网上浏览相关资料,使用NullableConv

DB2中字符、数字和日期类型之间的转换

DB2中字符.数字和日期类型之间的转换 一般我们在使用DB2或Oracle的过程中,经常会在数字<->字符<->日期三种类 型之间做转换,那么在DB2和Oracle中,他们分别是如何实现的呢?在Oracle这几个类型之间的转换是十分方便的,通过 to_char|to_date|to_number函数即可完成类型转换.本小节主要介绍DB2中的一些知识,从Oracle转过来的DBA或开发人 员,可以对比着学习. 数字型到字符型的转换 DB2中的col_a字段 字段类型 到字符类型的转换

数据库开发篇(一)——转换日期类型

原文:数据库开发篇(一)--转换日期类型 SQL Server支持的日期时间格式 SQL code Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 Select CONVERT(varchar(100), GE

JSONArray对日期类型的按指定格式转换的实现

1.DateJsonValueProcessor.java package com.px.util; import java.sql.Timestamp; import java.text.SimpleDateFormat; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor; import java.util.Date; /** * JSONArray对日期类型的按指定格式转换的实现 *