2

SimpleDateFormat クラスを使用して、この文字列から DateTime を解析しようとしています。

Mon Jan 10 2011 01:15:00 GMT+0000 (GMT Standard Time)

次のフォーマット文字列を試しました:

String example = "Mon Jan 10 2011 01:15:00 GMT+0000 (GMT Standard Time)";
SimpleDateFormat formatter = new SimpleDateFormat("E M d y H:m:s z");
try
{
    Date exampleDate = formatter.parse(example);
    LOGGER.warn(exampleDate.toString());
}
catch(Exception e)
{
    LOGGER.warn(e.getMessage(), e);
}

しかし、それはエラーを生成します:

Unparseable date: "Mon Jan 10 2011 01:15:00 GMT+0000 (GMT Standard Time)"

そこで、サンプル文字列の括弧で囲まれた最後の部分を削除してみました:

String example = "Sun Jan 09 2011 22:00:00 GMT+0000";

しかし、それは同じエラーを生成します。

WARNING: Unparseable date: "Sun Jan 09 2011 22:00:00 GMT+0000"
java.text.ParseException: Unparseable date: "Sun Jan 09 2011 22:00:00 GMT+0000"

これを回避する方法に関するヒントはありますか?

4

4 に答える 4

2

使用する必要があります(またはZ最後の部分のみ):

E MMM dd yyyy HH:mm:ss zZ 
于 2012-09-18T19:13:52.577 に答える
2

http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.htmlによると、フォーマットは次のようにする必要があります。

"E M d y H:m:s zZ"

これには、一般的なタイムゾーンと RFC 822 タイムゾーンが含まれます。

または、入力日を次のように変更できます。

Mon Jan 10 2011 01:15:00 GMT+00:00

ちょうど収容するだろうz

(最後の部分のコロンに注意してください。)

于 2011-01-12T01:06:29.520 に答える
1

月のテキストを解析する場合は、「MMM」も使用する必要があります。javadoc から:

「月: パターン文字の数が 3 つ以上の場合、月はテキストとして解釈されます。それ以外の場合、月は数字として解釈されます。」

于 2011-01-12T01:23:49.163 に答える
0

問題は、修飾子が解析できないことだと思います。what parsesを説明している Javadocによると、フォーマットは GMT+HHMM ではなく GMT+HH:MM のようなものです。あなたが持っているものを解析したい場合は、おそらくフォーマット文字列をzGMT+0000z

E M d y H:m:s z

E M d y H:m:s 'G'M'Tz
于 2011-01-12T01:10:42.263 に答える