ソースを参照

fix时间序列化

Eric 1 年間 前
コミット
eb12900872

+ 50 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/config/CustomStringDateConverter.java

@@ -0,0 +1,50 @@
+package com.yonge.cooleshow.config;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.convert.converter.Converter;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 字符串格式转日期
+ */
+@Configuration
+public class CustomStringDateConverter implements Converter<String, Date> {
+	private static final String dateFormat = "yyyy-MM-dd HH:mm:ss";
+	private static final String shortDateFormat = "yyyy-MM-dd";
+	private static final String dateFormat2 = "yyyy/MM/dd HH:mm:ss";
+	private static final String shortDateFormat2 = "yyyy/MM/dd";
+
+	@Override
+	public Date convert(String source) {
+		if (StringUtils.isBlank(source)) {
+			return null;
+		}
+		source = source.trim();
+		try {
+			SimpleDateFormat formatter;
+			if (source.contains("-")) {
+				if (source.contains(":")) {
+					formatter = new SimpleDateFormat(dateFormat);
+				} else {
+					formatter = new SimpleDateFormat(shortDateFormat);
+				}
+                return formatter.parse(source);
+			} else if (source.contains("/")) {
+				if (source.contains(":")) {
+					formatter = new SimpleDateFormat(dateFormat2);
+				} else {
+					formatter = new SimpleDateFormat(shortDateFormat2);
+				}
+                return formatter.parse(source);
+			}
+		} catch (Exception e) {
+			throw new RuntimeException(String.format("parser %s to Date fail", source));
+		}
+
+		throw new RuntimeException(String.format("parser %s to Date fail", source));
+	}
+}
+

+ 5 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/config/WebMvcConfig.java

@@ -31,13 +31,18 @@ public class WebMvcConfig implements WebMvcConfigurer {
 	private EnumConverterFactory enumConverterFactory;
 	@Autowired
 	private MDCInterceptor mdcInterceptor;
+	@Autowired
+	private CustomStringDateConverter customStringDateConverter;
 
 	/**
 	 * 枚举类的转换器 addConverterFactory
 	 */
 	@Override
 	public void addFormatters(FormatterRegistry registry) {
+		// 枚举转换器
 		registry.addConverterFactory(enumConverterFactory);
+		// 字符串时间转换器
+		registry.addConverter(customStringDateConverter);
 	}
 
 	@Override

+ 3 - 1
cooleshow-app/src/test/resources/application.yml

@@ -1,9 +1,11 @@
 
-# SPRING配置
+# Spring应用配置
 spring:
   jackson:
     date-format: yyyy-MM-dd HH:mm:ss
     time-zone: GMT+8
+  mvc:
+    date-format: yyyy-MM-dd HH:mm:ss
 
 #应用配置
 app-config: