SpringBoot pasa la configuración de parámetros de marca de tiempo global y la clase de conversión de fecha de fecha

1. Establezca la conversión de cadena global a la clase de conversión de marca de tiempo

import org.apache.commons.lang.StringUtils;
importar org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component; 

import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.regex.Pattern; 

@Component 
public  class  StringToTimestampConverter  implementa Converter <String, Timestamp> { //的 的 <String, Timestamp> 表示 从 string 转换 到 timestamp 

    static  final String YYYY_MM_DD_HH_MM_SS_SSS = "aaaa-MM-dd HH: mm: ss.SSS" ;
    Cadena estática  final REG_YYYY_MM_DD_HH_MM_SS_SSS = "[0-9] {4} [-] {1} [0-9] {2} [-] {1} [0-9] {2} [] {1} [0- 9] {2} [:] {1} [0-9] {2} [:] {1} [0-9] {2} [.] {1} [0-9] {3} " ; 

    Cadena estática  final AAAA_MM_DD_HH_MM_SS_S = "aaaa-MM-dd HH: mm: ss.S" ;
    Cadena estática  final REG_YYYY_MM_DD_HH_MM_SS_S = "[0-9] {4} [-] {1} [0-9] {2} [-] {1} [0-9] {2} [] {1} [0- 9] {2} [:] {1} [0-9] {2} [:] {1} [0-9] {2} [.] {1} [0-9] {1} " ; 

    Cadena estática  final AAAA_MM_DD_HH_MM_SS = "aaaa-MM-dd HH: mm: ss" ;
     Cadena REG_YYYY_MM_DD_HH_MM_SS = "[0-9] {4} [-] {1} [0-9] {2} [-] {1} [0-9] {2} [] {1} [0-9] {2} [:] {1} [0-9] {2} [:] {1} [0-9] {2} " ; 

    Cadena estática  final AAAA_MM_DD = "aaaa-MM-dd" ;
    Cadena estática  final REG_YYYY_MM_DD = "[0-9] {4} [-] {1} [0-9] {2} [-] {1} [0-9] {2}" ;
    Cadena estática  final REG_NUMBER = "[0-9] {1,}" ; 

    @Override 
    public Timestamp convert (String timeStr) {
         if (StringUtils.isBlank (timeStr)) {
             return  null ; 
        } 
        timeStr = timeStr.trim (); 

        tratar {
            Formateador DateTimeFormatter; 
            if (Pattern.matches (StringToTimestampConverter.REG_YYYY_MM_DD_HH_MM_SS_SSS, timeStr)) { 
                formatter = DateTimeFormatter.ofPattern (YYYY_MM_DD_HH_MM_SS_SSS); 
            } else  if (Pattern.matches (StringToTimestampConverter.REG_YYYY_MM_DD_HH_MM_SS_S, timeStr)) { 
                formatter = DateTimeFormatter.ofPattern (YYYY_MM_DD_HH_MM_SS_S); 
            } else  if (Pattern.matches (StringToTimestampConverter.REG_YYYY_MM_DD_HH_MM_SS, timeStr)) { 
                formatter = DateTimeFormatter.ofPattern (YYYY_MM_DD_HH_MM_SS); 
            }sino  if (Pattern.matches (StringToTimestampConverter.REG_YYYY_MM_DD, timeStr)) { 
                formatter = DateTimeFormatter.ofPattern (YYYY_MM_DD); 
                LocalDate localDate = LocalDate.parse (timeStr, formatter); 
                Instantáneo instantáneo = localDate.atStartOfDay (). AtZone (ZoneId.systemDefault ()). ToInstant (); 
                Timestamp timestamp = Timestamp.from (instantáneo);
                marca de tiempo de retorno ; 
            } else  if (Pattern.matches (StringToTimestampConverter.REG_NUMBER, timeStr)) { 
                Long lDate = newLargo (timeStr);
                devolver  nueva marca de tiempo (lDate); 
            } else {
                 lanzar una  nueva RuntimeException (String.format ("analizador% s hasta la fecha falla" , timeStr)); 
            } 
                LocalDateTime localDateTime = LocalDateTime.parse (timeStr, formatter); 
                Timestamp timestamp = Timestamp.valueOf (localDateTime);
                marca de tiempo de retorno ; 
        } catch (Exception e) {
             throw  new RuntimeException (String.format ("analizador% s hasta la fecha falla"  , timeStr));
        }
    } 


}

 

2. Establezca la conversión de cadena global a la clase de conversión de fecha

import org.apache.commons.lang.StringUtils;
importar org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component; 

import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.regex.Pattern; 

@Component 
public  class  StringToUtilDateConverter  implementa Converter <String, Date> { // 这里 的 <String, Date> 表示 从 string 转换 到 Date 

    static Cadena final AAAA_MM_DD = "aaaa-MM-dd" ;
    Cadena estática  final REG_YYYY_MM_DD = "[0-9] {4} [-] {1} [0-9] {2} [-] {1} [0-9] {2}" ;
    Cadena estática  final REG_NUMBER = "[0-9] {1,}" ; 

    @Override 
    public Date convert (String timeStr) {
         if (StringUtils.isBlank (timeStr)) {
             return  null ; 
        } 
        timeStr = timeStr.trim (); 

        pruebe el 
            formateador { DateTimeFormatter; 
            if (Pattern.matches (StringToUtilDateConverter.REG_YYYY_MM_DD, timeStr)) { 
                formateador= DateTimeFormatter.ofPattern (AAAA_MM_DD); 
            } else  if (Pattern.matches (StringToUtilDateConverter.REG_NUMBER, timeStr)) { 
                Long lDate = new Long (timeStr);
                devolver  nueva marca de tiempo (lDate); 
            } else {
                 lanzar una  nueva RuntimeException (String.format ("analizador% s hasta la fecha falla" , timeStr)); 
            } 
                LocalDate localDate = LocalDate.parse (timeStr, formatter); 
                Instantáneo instantáneo =localDate.atStartOfDay (). atZone (ZoneId.systemDefault ()). toInstant (); 
                Fecha fecha = Fecha.from (instantáneo);
                fecha de regreso ; 
        } catch (Exception e) {
             lanzar una  nueva RuntimeException (String.format ("analizador% s hasta la fecha falla" , timeStr)); 
        } 
    } 


}

 

3. ¡Importante! El último paso, registre la clase de conversión en el contenedor de resorte.

import com.myapp.util.StringToTimestampConverter;
import com.myapp.util.StringToUtilDateConverter;
import org.springframework.beans.factory.annotation.Autowired;
importar org.springframework.context.annotation.Configuration;
importar org.springframework.core.convert.support.GenericConversionService;
importar org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; 

import javax.annotation.PostConstruct; 

@Configuration 
public  class MyappConfigTimestampConverter { 
    @Autowired
     private RequestMappingHandlerAdapter handlerAdapter; 
    @Autowired 
    private StringToTimestampConverter stringToTimestampConverter; 
    @Autowired 
    private StringToUtilDateConverter stringToUtilDateConverter; 

    / ** 
     * convierte una cadena en java.sql.Timestamp y otra fecha 
     * / 
    @PostConstruct 
    public  void initEditableAvlidation () { 

        ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter.getWebBindingInitializer ();
        if (initializer.getConversionService ()! = null ) {
            GenericConversionService genericConversionService = (GenericConversionService) initializer.getConversionService (); 
            genericConversionService.addConverter (stringToTimestampConverter); 
            genericConversionService.addConverter (stringToUtilDateConverter); 
        } 

    } 
}

 

final.

Supongo que te gusta

Origin www.cnblogs.com/zhuwenjoyce/p/12692914.html
Recomendado
Clasificación