第一步:编写自己的类型转换器,将string转换Date
/**
* @Title: Da
* @Package com.x
* Copyright: Copyright (c) 2015
* @author: abc
* @date: 2017年9月7日 下午12:26:54
*
*/
package com.x;
import java.;
import java.u;
import org.;
import org.Factory;
import org.;
public class DateConverter implements Converter<String, Date> {
private static Logger log = LoggerFac);
/**
* 日期格式带有横杠
*/
private final static String SPLIT_WHIFFLETREE = "-";
/**
* 日期格式带有斜杠
*/
private final static String SPLIT_SLASH = "/";
/**
* 时间冒号
*/
private final static String SPLIT_COLON = ":";
@Override
public Date convert(String value) {
Date result = null;
try {
// 横杠处理
if (SPLIT_WHIFFLETREE)) {
if () == 19) {
result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value);
} else if () == 16) {
result = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(value);
} else if () == 10) {
result = new SimpleDateFormat("yyyy-MM-dd").parse(value);
} else if () == 7) {
result = new SimpleDateFormat("yyyy-MM").parse(value);
} else if () == 4) {
result = new SimpleDateFormat("yyyy").parse(value);
}
} else if (SPLIT_SLASH)) {// 斜杠处理
if () == 19) {
result = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(value);
} else if () == 16) {
result = new SimpleDateFormat("yyyy/MM/dd HH:mm").parse(value);
} else if () == 10) {
result = new SimpleDateFormat("yyyy/MM/dd").parse(value);
} else if () == 7) {
result = new SimpleDateFormat("yyyy/MM").parse(value);
} else if () == 4) {
result = new SimpleDateFormat("yyyy").parse(value);
}
} else if (isChinese(value)) {// 判断中文日期
if () > 18) {
result = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").parse(value);
} else if () > 15) {
result = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分").parse(value);
} else if () > 10) {
result = new SimpleDateFormat("yyyy年MM月dd日").parse(value);
} else if () > 7) {
result = new SimpleDateFormat("yyyy年MM月").parse(value);
} else if () > 4) {
result = new SimpleDateFormat("yyyy年").parse(value);
}
} else {// 无格式日期转换
if () == 17) {
result = new SimpleDateFormat("yyyyMMdd HH:mm:ss").parse(value);
} else if () == 14) {
result = new SimpleDateFormat("yyyyMMdd HH:mm").parse(value);
} else if () == 8) {
if (SPLIT_COLON)) {
result = new SimpleDateFormat("HH:mm:ss").parse(value);
} else {
result = new SimpleDateFormat("yyyyMMdd").parse(value);
}
} else if () == 6) {
result = new SimpleDateFormat("yyyyMM").parse(value);
} else if () == 4) {
result = new SimpleDateFormat("yyyy").parse(value);
} else if () == 5) {
result = new SimpleDateFormat("HH:mm").parse(value);
}
}
} catch (Exception e) {
log.error("DateConverter error:" + e.getMessage(), e);
}
return result;
}
private static boolean isChinese(char c) {
C ub = C.of(c);
if (ub == C.CJK_UNIFIED_IDEOGRAPHS || ub == C.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == C.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == C.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B || ub == C.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == C.HALFWIDTH_AND_FULLWIDTH_FORMS || ub == C.GENERAL_PUNCTUATION) {
return true;
}
return false;
}
/**
* 完整的判断中文汉字和符号
*
* @param strName
* @return
*/
public static boolean isChinese(String strName) {
char[] ch = ();
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
if (isChinese(c)) {
return true;
}
}
return false;
}
}
第二步:配置为全局类型转换
<!-- 设置Converter转换器 -->
<bean id="convert" class="org.;>
<!-- 设置多个转换器 -->
<property name="converters">
<list>
<bean class="com.x.DateConverter"></bean>
</list>
</property>
</bean>
第三步:扫描器中关联配置
<mvc:annotation-driven conversion-service="convert"></mvc:annotation-driven>