springMVC类型转换,提交日期字符数据自动转换日期格式
来源:互联网 发布:乐高 t r3x 编程下载 编辑:程序博客网 时间:2024/06/06 00:51
第一步:编写自己的类型转换器,将string转换Date
/**
* @Title: DateConverter.java
* @Package com.xtt.txgl.common.controller
* Copyright: Copyright (c) 2015
* @author: abc
* @date: 2017年9月7日 下午12:26:54
*
*/
package com.xtt.txgl.common.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.convert.converter.Converter;
public class DateConverter implements Converter<String, Date> {
private static Logger log = LoggerFactory.getLogger(DateConverter.class);
/**
* 日期格式带有横杠
*/
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 (value.contains(SPLIT_WHIFFLETREE)) {
if (value.length() == 19) {
result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value);
} else if (value.length() == 16) {
result = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(value);
} else if (value.length() == 10) {
result = new SimpleDateFormat("yyyy-MM-dd").parse(value);
} else if (value.length() == 7) {
result = new SimpleDateFormat("yyyy-MM").parse(value);
} else if (value.length() == 4) {
result = new SimpleDateFormat("yyyy").parse(value);
}
} else if (value.contains(SPLIT_SLASH)) {// 斜杠处理
if (value.length() == 19) {
result = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(value);
} else if (value.length() == 16) {
result = new SimpleDateFormat("yyyy/MM/dd HH:mm").parse(value);
} else if (value.length() == 10) {
result = new SimpleDateFormat("yyyy/MM/dd").parse(value);
} else if (value.length() == 7) {
result = new SimpleDateFormat("yyyy/MM").parse(value);
} else if (value.length() == 4) {
result = new SimpleDateFormat("yyyy").parse(value);
}
} else if (isChinese(value)) {// 判断中文日期
if (value.length() > 18) {
result = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").parse(value);
} else if (value.length() > 15) {
result = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分").parse(value);
} else if (value.length() > 10) {
result = new SimpleDateFormat("yyyy年MM月dd日").parse(value);
} else if (value.length() > 7) {
result = new SimpleDateFormat("yyyy年MM月").parse(value);
} else if (value.length() > 4) {
result = new SimpleDateFormat("yyyy年").parse(value);
}
} else {// 无格式日期转换
if (value.length() == 17) {
result = new SimpleDateFormat("yyyyMMdd HH:mm:ss").parse(value);
} else if (value.length() == 14) {
result = new SimpleDateFormat("yyyyMMdd HH:mm").parse(value);
} else if (value.length() == 8) {
if (value.contains(SPLIT_COLON)) {
result = new SimpleDateFormat("HH:mm:ss").parse(value);
} else {
result = new SimpleDateFormat("yyyyMMdd").parse(value);
}
} else if (value.length() == 6) {
result = new SimpleDateFormat("yyyyMM").parse(value);
} else if (value.length() == 4) {
result = new SimpleDateFormat("yyyy").parse(value);
} else if (value.length() == 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) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
return true;
}
return false;
}
/**
* 完整的判断中文汉字和符号
*
* @param strName
* @return
*/
public static boolean isChinese(String strName) {
char[] ch = strName.toCharArray();
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.springframework.format.support.FormattingConversionServiceFactoryBean">
<!-- 设置多个转换器 -->
<property name="converters">
<list>
<bean class="com.xtt.txgl.common.controller.DateConverter"></bean>
</list>
</property>
</bean>
第三步:扫描器中关联配置
<mvc:annotation-driven conversion-service="convert"></mvc:annotation-driven>
- springMVC类型转换,提交日期字符数据自动转换日期格式
- SpringMvc 自动转换日期格式
- springmvc提交数据到controller进行日期格式转换
- JAVA springmvc自动转换日期类型的格式
- springMVC日期格式转换
- SpringMVC日期类型自动转换的处理
- SpringMvc日期类型转换问题
- ORACLE 日期字符格式转换
- Springmvc接收前台字符串类型日期格式转换
- SpringMVC日期格式类型转换问题--3种处理方法
- Oracle日期类型转换格式
- Oracle日期类型转换格式
- Oracle日期类型转换格式
- Oracle日期类型转换格式
- Oracle日期类型转换格式
- Oracle日期类型转换格式
- springMVC注解@initbinder日期类型的属性自动转换
- SpringMVC返回json数据的日期格式统一转换
- CF #433 DIV2 B. Maxim Buys an Apartment
- 说说云盘背后的黑科技!
- 20. Valid Parentheses
- 使用cmake gui 生成cpp-netlib vs2013项目并编译说明
- linux grep
- springMVC类型转换,提交日期字符数据自动转换日期格式
- NodeJs surperagent API
- 慕课笔记--[课程]Node.js+MongoDB建站攻略
- 爬取12306站点信息
- DBV-00201: Block, DBA 21065723, marked corrupt for invalid redo application解决
- amoy url
- 数组指针和指针数组的区别
- Spring思维导图,让Spring不再难懂(ioc篇)
- Bootstrap Modal-静态框使用及遇到的问题