From 1bd6bae9ba8d8a2a01101992bbcae1643f244558 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Mon, 30 Jul 2018 11:25:11 +0800
Subject: [PATCH] 字符串转时间类型 优化

---
 src/main/java/com/moral/common/convert/StringToDateConverter.java |   36 +++++++++++++++++++++++++++++-------
 1 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/moral/common/convert/StringToDateConverter.java b/src/main/java/com/moral/common/convert/StringToDateConverter.java
index 0e8a5b0..0a4fb68 100644
--- a/src/main/java/com/moral/common/convert/StringToDateConverter.java
+++ b/src/main/java/com/moral/common/convert/StringToDateConverter.java
@@ -1,8 +1,11 @@
 package com.moral.common.convert;
 
+import com.moral.common.exception.BusinessException;
 import com.moral.common.util.StringUtils;
+import org.apache.log4j.Logger;
 import org.springframework.core.convert.converter.Converter;
-
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 
 /**
@@ -11,18 +14,37 @@
  * @version $Id: StringToDateConverter.java, v 0.1 2015���9���24��� ������7:19:41 byshome Exp $
  */
 public class StringToDateConverter implements Converter<String, Date> {
-//    private static final String dateFormat      = "yyyy-MM-dd HH:mm:ss";
+    private static   Logger log = Logger.getLogger(StringToDateConverter.class);
+    private static final String dateFormat      = "yyyy-MM-dd HH:mm:ss";
 //    private static final String shortDateFormat = "yyyy-MM-dd";
-
+      private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
     /** 
      * @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object)
      */
     @Override
     public Date convert(String source) {
-          if(StringUtils.isNullOrEmpty(source)){
-              throw new RuntimeException(String.format("parser %s to Date fail", source));
-          };
-          return  new Date(Long.parseLong(source.substring(0,source.length()-3)+"000"));
+        try {
+            if(StringUtils.isNullOrEmpty(source)){
+                throw new BusinessException(String.format("parser %s to Date fail", source));
+            }
+            if("null".equals(source)){
+                return  null;
+            }
+            if(StringUtils.isNumericZidai(source)) {
+                source = source.length() == 10 ? source+"000" : source;
+                return new Date(Long.parseLong(source));
+            } else {
+                return  simpleDateFormat.parse(source);
+            }
+        } catch (ParseException e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        }
+
+        return null;
     }
 
 }
\ No newline at end of file

--
Gitblit v1.8.0