18

日付解析の例の日付に問題があります:

SimpleDateFormat parserSDF=new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.getDefault());


parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");

例外を得た

正確には、この形式の日付を yyyy-MM-dd に解析したい:

SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");

take : java.text.ParseException: Unparseable date: "Wed Oct 16 00:00:00 CEST 2013"


OKに変更して動作します:

SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");
4

3 に答える 3

23

あなたはポーランドにいるように見えるので、それLocale.getDefault()はあなたのためだと思います。pl-PL

したがって、日付文字列に英単語があると、解析不能な日付になります。

適切なポーランドの日付Stringは次のようになります

"Wt paź 16 00:00:00 -0500 2013"

それ以外の場合は、オブジェクトが英語の単語で日付を解析できるようLocaleに to を変更します。Locale.ENGLISHSimpleDateFormatString

于 2013-11-08T14:51:59.237 に答える
9

Locale.defaultあなたと他の人がどちらのデフォルトを知らないことが多いかを使用する代わりにlocale.ENGLISH、文字列の日付が英語の形式であることを確認したので、使用して決定できます。他の国にいる場合は、形式が異なります。

これが私のコード例です:

public static void main(String[] args) {
    try {
        SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
        Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");
        System.out.println("date: " + date.toString());
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
}

結果は次のようになりますdate: Wed Oct 16 05:00:00 ICT 2013。または、フィールドを使用して、この日付のどの部分を印刷するかを決定できます。

この助けを願っています:)

于 2013-11-08T14:43:37.090 に答える
6

元の例外はZあなたのフォーマットによるものだと思います。ドキュメントごと:

Z   Time zone   RFC 822 time zone   -0800

ほとんどの場合、小文字を使用するつもりでしたz

于 2013-11-08T14:49:09.333 に答える