55 votes

GsonBuilder setDateFormat pour "2011-10-26T20:29:59-07:00"

J'obtiens une date/heure en json sous la forme 2011-10-26T20:29:59-07:00 . Quelle est la bonne façon d'utiliser gsonBuilder.setDateFormat pour formater correctement cette fois ?

12voto

Loki Points 861

Pour Java 8 (je n'ai pas vérifié pour Java 7), utilisez simplement le modèle

 yyyy-MM-dd'T'HH:mm:ssXXX

Pour obtenir exactement le format de 2011-10-26T20:29:59-07:00 .

Le modèle de fuseau horaire provient de Java Date Time - Modèles de format de date personnalisés

  • X
     Zone offset
    Example:
        X       +09
        XX      +0930 
        XXX     +09:30
        XXX     -05:00
        XXXX    +093045
        XXXXX   +08:30:45
    

4voto

JoeLallouz Points 499

Cela fait un moment que cela a été publié, mais je l'ai rencontré en essayant d'utiliser GSON pour analyser une réponse d'API qui avait ce format de date. J'ai pensé que je partagerais les 2 petites fonctions que j'ai écrites en utilisant regex pour trouver toutes les dates et les changer au format que GSON peut ensuite analyser.

 private static String cleanDateFormat(String json){ // takes in a string of JSON
    Pattern regex = Pattern.compile("\\d\\d:\\d\\d:\\d\\d[-\\+]\\d\\d:\\d\\d"); 
    Matcher regexMatcher = regex.matcher(json);
    StringBuffer buff = new StringBuffer();
    while(regexMatcher.find()){
        regexMatcher.appendReplacement(buff, getSubOfMatch(regexMatcher));
    }
    regexMatcher.appendTail(buff);
    return buff.toString();
}
//then pull out the colon.
private static String getSubOfMatch(Matcher matcher){
    StringBuilder sb = new StringBuilder(matcher.group(0));
    sb.deleteCharAt(sb.length()-3);
    return sb.toString();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X