2017-08-31 2 views
2

Disons que j'ai dans mon RestControllerSpring boot timestamp unix @RequestParam à LocalDateTime

@GetMapping("/") 
public list(@RequestParam LocalDateTime date) { 
} 

et je fais une requête GET avec le paramètre de demande de date timestamp unix comme ceci:

http://myserver.com/?date=1504036215944

Comment faire en sorte que Spring Boot et jackson utilisent automatiquement la conversion correcte de l'horodatage unix en LocalDateTime sans effectuer manuellement la conversion.

+0

https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-ann-requestparam –

+0

@ Maytham-ɯɐɥʇʎɐɯ il est en double pas, il est lié à SpringBoot et non Printemps – IddoE

+0

Problème @danial résolu? – IddoE

Répondre

0

Une solution:

@GetMapping("/") 
public @ResponseBody String list(TimestampRequestParam date) { 
    return date.toString(); 
} 

La mise en œuvre de l'horodatage convertisseur de date dans setDate

attention de salaire que le getter & setter doit avoir le nom du paramètre (le membre de la classe peut avoir le nom différent)

class TimestampRequestParam { 

    private Date date; // member name doesn't need to be like request parameter 

    private static final SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); 

    public Timestamp2DateExample() { } 

    // must have the same name as the request param 
    public Date getDate() { 
     return date; 
    } 

    /** 
    * @param timestamp 
    * here we convert timestamp to Date, method name must be same as request parameter 
    */ 
    public void setDate(String timestamp) { 
     long longParse = Long.parseLong(timestamp); 
     this.date = new Date(longParse); 
    } 

    @Override 
    public String toString() { 
     return "timestamp2date : " + FORMAT.format(date); 
    } 

} 

Exemple de sortie (faites attention au port, vous pourriez avoir configuré différemment)

$ curl localhost:8080?date=1504036215944 

timestamp2date : 2017-08-29 22:50:15.944