import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.regex.Pattern;
import org.apache.commons.beanutils.Converter;
public class UtilDateConverter implements Converter {
private SimpleDateFormat ymdhmsSSS = new SimpleDateFormat(
" yyyy-MM-dd hh:mm:ss.SSS " );
private SimpleDateFormat ymdhms = new SimpleDateFormat(
" yyyy-MM-dd hh:mm:ss " );
private SimpleDateFormat ymd = new SimpleDateFormat( " yyyy-MM-dd " );
public Object convert(Class arg1, Object arg2) {
if ( null != arg2 && arg2 instanceof String) {
try {
String dateStr = (String) arg2;
if (Pattern.matches( " \\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{1,2}:\\d{1,2}.\\d{1,3} " , dateStr))
return ymdhmsSSS.parse(dateStr);
else if (Pattern.matches( " \\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{1,2}:\\d{1,2} " , dateStr))
return ymdhms.parse(dateStr);
else if (Pattern.matches( " \\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{1,2} " ,dateStr))
return ymdhms.parse(dateStr + " :00 " );
else if (Pattern.matches( " \\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2} " ,dateStr))
return ymdhms.parse(dateStr + " :00:00 " );
else if (Pattern.matches( " \\d{4}-\\d{1,2}-\\d{1,2} " , dateStr))
return ymd.parse(dateStr);
else if (Pattern.matches( " \\d{4}-\\d{1,2} " , dateStr))
return ymd.parse(dateStr + " -01 " );
} catch (ParseException e) {
e.printStackTrace();
return null ;
}
}
return null ;
}
/*
* 此类的用法如下: 创建一个servlet,servlet里面只要一个init() 方法
* public void init(){
* ConvertUtils.register(new UtilDateConverter(), java.util.Date.calss);
* }
* 然后在web.xml里注册此servlet类,类似代码如下
* <servlet>
* <servlet-name>UtilDateConverterRegister</servlet-name>
* <servlet-class>包名.UtilDateConverterRegister</servlet-class>
* <load-on-startup>2</load-on-startup>
* </servlet>
* 注意:此servlet不需要编写<servlet-mapping>这个信息
*/
}