web-dev-qa-db-ja.com

HTTP Last-Modifiedヘッダーから日付を解析する方法は?

HTTP Last-Modifiedヘッダーには、次の形式の日付が含まれます(例)。
Wed, 09 Apr 2008 23:55:38 GMT
この文字列からJava.util.Dateを解析する最も簡単な方法は何ですか?

50
levanovd

これはかなり近いはずです

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) Apache http-componentsから

(レガシー: DateUtil.parseDate(dateString) (Apache commons-httpclientから))

定数として定義された正しい形式があり、プロトコルに準拠することが保証されています。

62
Bozho

RFC 2616は、適合クライアントが理解しなければならない3つの異なる日付形式を定義しています。

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

23
ralfstx

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 112 はその形式を定義します。

16
Stan Svec

URLConnectionsを使用している場合、便利なメソッドがすでにあります。

RLConnection#getLastModified を参照してください

このメソッドは、日付文字列を解析し、ミリ秒値を返します。次に、その値でDateを作成します。

5
Jin Kwon