SpringMVC写一个时间格式转换器(三种方法)

第一种方法:

在变量处直接添加@DateTimeFormat(pattern="yyyy-MM-dd")

 

第二种方法:

1.首先新建一个DataConverter实现Converter接口的工具类

package util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Pattern;

import org.springframework.core.convert.converter.Converter;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

public class DataConverter implements Converter<String, Date> {

	public Date convert(String source) {
		//编写时间转换器,支持多种时间格式
				SimpleDateFormat sdf = getSimpleDateFormat(source);
				try {
					Date date = sdf.parse(source);
					return date;
				} catch (ParseException e) {
					e.printStackTrace();
				} catch (java.text.ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		return null;
	}
	private SimpleDateFormat getSimpleDateFormat( String source ) {
		SimpleDateFormat sdf = new SimpleDateFormat();
		if( Pattern.matches("^\\d{4}-\\d{2}-\\d{2}$", source )) {
			sdf = new SimpleDateFormat("yyyy-MM-dd");
		} else {
			System.out.println("日期格式错误");
		}
		return sdf;
	}
}

  2.在配合文件中加上

<!-- 注册转化器 -->
    <mvc:annotation-driven conversion-service="conversion-service"/>    
    <!-- 转换器服务工厂Bean -->
    <bean id="conversion-service"
        class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="util.DataConverter" /><!--工具类的class路径-->
            </set>
        </property>
    </bean>

  第三种方法:

1,首先建工具类

package util;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;

public class MyDateConverter {
	@InitBinder
    public void initBinder(WebDataBinder binder) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
    }
}

 2.让controller继承上面这个类

posted @ 2019-04-16 10:17  致颜文磊  阅读(2372)  评论(1编辑  收藏  举报