Spring mvc 自定义时间转换器

<!-- 自定义转换器 -->
    <bean id="conversionService" class="org.springframework.format.support.DefaultFormattingConversionService">
        	<property name="converters">
        		<list>
        		    <bean class="org.converter.DateConverter"></bean>
        		</list>
        	</property>
    </bean>
    <!-- 注册转化器 -->
      <mvc:annotation-driven conversion-service="conversionService" />
package org.converter;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

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

public class DateConverter implements Converter<String, Date>  {

	private static final List<String> formarts = new ArrayList<String>(4);
	static{
		formarts.add("yyyy-MM");
		formarts.add("yyyy-MM-dd");
		formarts.add("yyyy-MM-dd hh:mm");
		formarts.add("yyyy-MM-dd hh:mm:ss");
	}
	public Date convert(String source) {
		String value = source.trim();
		if ("".equals(value)) {
			return null;
		}
		if(source.matches("^\\d{4}-\\d{1,2}$")){
			return parseDate(source, formarts.get(0));
		}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
			return parseDate(source, formarts.get(1));
		}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
			return parseDate(source, formarts.get(2));
		}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
			return parseDate(source, formarts.get(3));
		}else {
			throw new IllegalArgumentException("Invalid boolean value ‘" + source + "‘");
		}
	}

	/**
	 * 功能描述:格式化日期
	 *
	 * @param dateStr
	 *            String 字符型日期
	 * @param format
	 *            String 格式
	 * @return Date 日期
	 */
	public  Date parseDate(String dateStr, String format) {
		Date date=null;
		try {
			DateFormat dateFormat = new SimpleDateFormat(format);
			date = (Date) dateFormat.parse(dateStr);
		} catch (Exception e) {
		}
		return date;
	}
	public static void main(String[] args) {
		System.err.println(new DateConverter().convert("2014-04"));
	}
}
时间: 2024-08-01 23:26:50

Spring mvc 自定义时间转换器的相关文章

Spring MVC 自定义类型转换器

新建一个自定义转换器 import org.springframework.core.convert.converter.Converter; import org.springframework.stereotype.Component; import com.atguigu.springmvc.crud.entities.Department; import com.atguigu.springmvc.crud.entities.Employee; @Component public cla

spring mvc 自定义转换器

<!-- 注册转化器 --> <mvc:annotation-driven conversion-service="conversionService" /> <!-- 自定义转换器 --> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> &l

spring mvc 自定义编辑器

起始知识: Java标准的PropertyEditor的核心功能是将一个字符串转换为一个Java对象,以便根据界面的输入或配置文件中的配置字符串构造出一个JVM内部的java对象. 如何注册自定义的属性编辑器: 1.实现PropertyEditor接口或者继承PropertyEditorSupport类 2.在Spring上下文中声明一个org.springframework.beans.factory.config.CustomEditorConfigurer的bean <!--将bean1中

spring mvc --自定义converse

思路:假设有两个空栈s1,s2,用s1提供入队功能,s2提供出队功能. push操作:直接push到s1. pop操作:如果s2不为空,直接弹出s2的数据,否则依次弹出s1的数据到s2中,再取2栈顶的数据. #include <iostream> #include <stack> using namespace std; template<typename T> class Queue { public: Queue() : qsize(0) { } void push

彻底解决Spring mvc中时间的转换和序列化等问题

痛点 在使用Spring mvc 进行开发时我们经常遇到前端传来的某种格式的时间字符串无法用java8的新特性java.time包下的具体类型参数来直接接收. 我们使用含有java.time封装类型的参数接收也会报反序列化问题,在返回前端带时间类型的同样会出现一些格式化的问题.今天我们来彻底解决他们. 建议 其实最科学的建议统一使用时间戳来代表时间.这个是最完美的,避免了前端浏览器的兼容性问题,同时也避免了其它一些中间件的序列化/反序列化问题.但是用时间表达可能更清晰语义化.两种方式各有千秋,如

Spring MVC自定义统一异常处理类,并且在控制台中输出错误日志

在使用SimpleMappingExceptionResolver实现统一异常处理后(参考Spring MVC的异常统一处理方法), 发现出现异常时,log4j无法在控制台输出错误日志.因此需要自定义一个继承至SimpleMappingExceptionResolver的 RrtongMappingExceptionResolver类,在RrtongMappingExceptionResolver中通过 log.error(ex.getMessage())的方式输出日志到控制台上.以下是具体的配

Spring MVC 自定义标签如何使用@Autowired自动装配注解

在用Spring MVC框架做Web应用开发中,在一些特殊请款下我们都会用自定标签来完成一些特殊的功能. 在通常情况下,自定义标签的内容如果不通过访问服务就能实现,那么继承TagSupport,重写doStartTag()方法就可以实现基本功能. eg. 实现一个html标记的反转义功能的自定义标签 /** * @Comment * @Author Ron * @date 2016年8月30日 上午9:02:56 */ public class HtmlUnEncodeTags extends

spring mvc自定义注解--登录时密码加密注解

1,定义注解名称接口 /** * 使用该注解不用再MD5转换了 * * @author adonis * */ @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Password { String value() default "password"; } 2,实现HandlerMethodArgumentResolver 接口 public

Spring的自定义参数转换器(将可以转换的类型进行转换)

//可以在controller中定义用于转换的方法 public class DateConverter implements Converter<String, Date> { /** * 转换方法 */ public Date convert(String source) { // 1.定义转换格式对象(2016-02-03 13:22:53) SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss&