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 ?
Réponses
Trop de publicités?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
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();
}