20

Java で日付の RFC 2822 文字列表現を解析する必要があります。文字列の例は次のとおりです。

2010 年 3 月 13 日 (土) 11:29:05 -0800

それはかなり厄介に見えるので、私はすべてを正しく行っていることを確認したかったのですが、後で奇妙な問題に遭遇し、AM-PM/ミリタリー時間の問題、UTC 時間の問題、予期しない問題などによって日付が間違って解釈される可能性があります。 ...

ありがとう!

4

5 に答える 5

26

これは、( SimpleDateFormatを使用して)あなたが求めることを行う簡単なコードです

String rfcDate = "Sat, 13 Mar 2010 11:29:05 -0800";
String pattern = "EEE, dd MMM yyyy HH:mm:ss Z";
SimpleDateFormat format = new SimpleDateFormat(pattern);
Date javaDate = format.parse(rfcDate);

//Done.

PS。ここでは例外と同時実行性を扱いませんでした (SimpleDateFormat は日付の解析時に同期されないため)。

于 2010-03-16T22:19:22.953 に答える
20

アプリケーションが英語以外の言語を使用している場合は、別の SimpleDateFormat コンストラクターを使用して、日付の解析/書式設定にロケールを強制することができます。

String pattern = "EEE, dd MMM yyyy HH:mm:ss Z";
SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.ENGLISH);
于 2011-04-06T14:03:48.853 に答える
6

[day-of-week ","] は RFC-2822 ではオプションであるため、推奨される例はすべての RFC-2822 日付形式をカバーしていないことに注意してください。さらに、RFC-822 日付タイプでは、「Z」形式指定子ではカバーされない多くの異なるタイム ゾーン表記 (obs-zone) が許可されていました。

「,」と「-|+」を探して使用するパターンを決定する以外に、簡単な方法はないと思います。

于 2013-07-01T12:40:34.703 に答える