L'en-tête HTTP Last-Modified contient la date au format suivant (exemple):Wed, 09 Apr 2008 23:55:38 GMT
Quelle est la façon la plus simple d'analyser Java.util.Date à partir de cette chaîne?
Cela devrait être assez proche
String dateString = "Wed, 09 Apr 2008 23:55:38 GMT";
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");
Date d = format.parse(dateString);
DateUtil.parseDate(dateString)
des composants Apache http
(hérité: DateUtil.parseDate(dateString)
(depuis Apache commons-httpclient))
Il a le format correct défini comme une constante, qui est garantie d'être conforme au protocole.
La RFC 2616 définit trois formats de date différents qu'un client conforme doit comprendre.
Apache HttpClient fournit un DateUtil conforme à la norme:
Date date = DateUtils.parseDate( headerValue );
Lorsque vous utilisez le nouveau Java Date and Time API le code serait simplement:
ZonedDateTime zdt = ZonedDateTime.parse("Wed, 09 Apr 2008 23:55:38 GMT", DateTimeFormatter.RFC_1123_DATE_TIME);
La classe DateTimeFormatter
prédéfinit une constante pour ce format particulier dans RFC_1123_DATE_TIME
. Comme son nom l'indique, RFC 112 définit ce format.
Si vous utilisez URLConnection
s, il existe déjà une méthode pratique.
Voir RLConnection # getLastModified
Cette méthode analyse la chaîne de date et renvoie une valeur en millisecondes. Ensuite, vous pouvez facilement créer un Date
avec cette valeur.