spring 时间装配器 前后台date类型传值 date多重数据转换

亲测有效

1创建日期格式话工具DateEditor

import java.beans.PropertyEditorSupport;

import java.text.ParseException;

import java.util.Date;

 

/**

 * 日期格式话工具

 * SPRINGMVC日期字符换转换Date

 * @author ALLEN

 */

publicclassDateEditor extends PropertyEditorSupport {

   

   @Override

   publicvoidsetAsText(String text)throwsIllegalArgumentException {

        Date date = null;

        try {

            date=DateUtil.parseDate(text);

        } catch (ParseException e) {

            e.printStackTrace();

        }

       

        setValue(date);

   }

}

2创建日期装配器

import java.util.Date;

 

import javax.servlet.http.HttpServletRequest;

 

import org.springframework.web.bind.ServletRequestDataBinder;

import org.springframework.web.bind.annotation.InitBinder;

/**

  日期装配器

 * @author lxy

 * @date 2017323下午2:15:43

 */

publicclassDateBinderUtil {

   /**

     * 初始化日期格式

     *

     * @param request

     * @param binder

     * @throws Exception

     */

   @InitBinder

   protectedvoidinitBinder(HttpServletRequest request, ServletRequestDataBinder binder) throwsException {

        binder.registerCustomEditor(Date.class, new DateEditor());

   }

}

3配置

 

   <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">

        <property name="messageConverters">

            <list>

                <ref bean="stringHttpMessageConverter"/>

            </list>

        </property>

   </bean>

   <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">

        <property name="supportedMediaTypes">

            <list>

                <value>text/html; charset=utf-8</value>

            </list>

        </property>

</bean>

 

4附录DateUtil

// 从字符串中分析日期

   publicstatic Date parseDate(String dateStr) throws ParseException {

      Datedate= null;

      String[]dateArray= dateStr.split("\\D+"); // +防止多个非数字字符在一起时导致解析错误

      intdateLen = dateArray.length;

      intdateStrLen = dateStr.length();

      if (dateLen > 0) {

        if (dateLen == 1 && dateStrLen > 4) {

           if (dateStrLen == "yyyyMMddHHmmss".length()){

              // 如果字符串长度为14位并且不包含其他非数字字符,则按照(yyyyMMddHHmmss)格式解析

              date = parseDate(dateStr, "yyyyMMddHHmmss");

           }elseif(dateStrLen== "yyyyMMddHHmm".length()) {

              date = parseDate(dateStr, "yyyyMMddHHmm");

           }elseif(dateStrLen== "yyyyMMddHH".length()) {

              date = parseDate(dateStr, "yyyyMMddHH");

           }elseif(dateStrLen== "yyyyMMdd".length()) {

              date = parseDate(dateStr, "yyyyMMdd");

           }elseif(dateStrLen== "yyyyMM".length()){

              date = parseDate(dateStr, "yyyyMM");

           }

        }else{

           StringfDateStr= dateArray[0];

           for (inti = 1; i < dateLen; i++) {

              // 左补齐是防止十位数省略的情况

              fDateStr += leftPad(dateArray[i], "0", 2);

           }

 

           if (dateStr.trim().matches("^\\d{1,2}:\\d{1,2}(:\\d{1,2})?$")) {

              // 补充年月日3个字段

              dateLen += 3;

              fDateStr = formatDate(new Date(), "yyyyMMdd")+ fDateStr;

           }

 

           date = parseDate(fDateStr, "yyyyMMddHHmmss".substring(0,(dateLen- 1) * 2 + 4));

        }

      }

 

      returndate;

   }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值