Как анализировать дату из HTTP Last-Modified заголовка?

HTTP Last-Modified заголовок содержит дату в следующем формате (пример):
Wed, 09 Apr 2008 23:55:38 GMT
Самый простой способ проанализировать java.util.Date из этой строки?

Ответ 1

Это должно быть довольно близко

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

Ответ 2

DateUtil.parseDate(dateString) от http-компонентов apache

(legacy: DateUtil.parseDate(dateString) (из apache commons-httpclient))

Он имеет правильный формат, определенный как константа, которая, как гарантируется, будет соответствовать протоколу.

Ответ 3

RFC 2616 определяет три разных формата даты, которые должен понять соответствующий клиент.

Apache HttpClient предоставляет DateUtil, который соответствует стандарту:

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

Ответ 4

Если вы используете URLConnection s, есть уже удобный метод.

См URLConnection # getLastModified

Этот метод анализирует строку даты и возвращает значение в миллисекундах. Затем вы можете с радостью создать Date с этим значением.

Ответ 5

java.time

При использовании нового Java Date and Time API код будет просто:

ZonedDateTime zdt = ZonedDateTime.parse("Wed, 09 Apr 2008 23:55:38 GMT", DateTimeFormatter.RFC_1123_DATE_TIME);

Класс DateTimeFormatter предопределяет константу для этого конкретного формата в RFC_1123_DATE_TIME. Как следует из названия, RFC 1123 определяет этот формат.