Заголовок HTTP Last-Modified содержит дату в следующем формате (пример): Wed, 09 Apr 2008 23:55:38 GMT Какой самый простой способ разобрать java.util.Date из этой строки?
Wed, 09 Apr 2008 23:55:38 GMT
Это должно быть довольно близко
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
DateUtil.parseDate(dateString) от http-компонентов apache
DateUtil.parseDate(dateString)
(устаревшее: DateUtil.parseDate(dateString) (от apache commons-httpclient))
Он имеет правильный формат, определенный как Константа, который гарантированно соответствует протоколу.
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 );
При использовании нового API даты и времени Java код будет просто:
ZonedDateTime zdt = ZonedDateTime.parse("Wed, 09 Apr 2008 23:55:38 GMT", DateTimeFormatter.RFC_1123_DATE_TIME);
Класс DateTimeFormatter предварительно определяет константу для этого конкретного формата в RFC_1123_DATE_TIME. Как следует из названия, RFC 1123 определяет этот формат.
DateTimeFormatter
RFC_1123_DATE_TIME
Если вы используете URLConnection s, уже есть удобный метод.
URLConnection
См URLConnection # getLastModified
Этот метод анализирует строку даты и возвращает значение в миллисекундах. Тогда вы можете счастливо создать Date с этим значением.
Date