web-dev-qa-db-fra.com

Comment analyser la date à partir de l'en-tête HTTP Last-Modified?

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?

50
levanovd

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);

SimpleDateFormat

71
Shaun

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.

62
Bozho

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:

https://hc.Apache.org/httpcomponents-client-4.3.x/httpclient/apidocs/org/Apache/http/client/utils/DateUtils.html

https://Apache.googlesource.com/httpclient/+/4.3.x/httpclient/src/main/Java/org/Apache/http/client/utils/DateUtils.Java

Date date = DateUtils.parseDate( headerValue );

23
ralfstx

Java.time

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.

16
Stan Svec

Si vous utilisez URLConnections, 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.

5
Jin Kwon