6

文字列を日付に解析しようとしていますが、これは私が持っているものです:

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ (zzzz)");
Date date = new Date();
try {
    date = sdf.parse(time);
} catch (ParseException e) {
    e.printStackTrace();
}

解析する文字列は次のとおりです。

Sun Jul 15 2012 12:22:00 GMT+0300 (FLE Daylight Time)

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.htmlに従いました

私は本ですべてをやったと確信しています。しかし、それは私に与えていますParseException

java.text.ParseException: Unparseable date: 
"Sun Jul 15 2012 12:22:00 GMT+0300 (FLE Daylight Time)"

私は何を間違っていますか?私が試したパターン:

EEE MMM dd yyyy HH:mm:ss zzz
EEE MMM dd yyyy HH:mm:ss zZ (zzzz)
4

5 に答える 5

11

zとのパターンを混在させているようですZ。を無視する(FLE Daylight Time)と、これは と同じ情報なので、またはのいずれかが必要GMT+0300になるという問題になります。最後のバリアントは次のように解析できます。 SimpleDateFormatGMT +0300GMT+03:00

String time = "Sun Jul 15 2012 12:22:00 GMT+03:00 (FLE Daylight Time)";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zzz");
Date date = sdf.parse(time);

[編集]
時間文字列の動作に関する他の投稿に照らして、これはおそらく時間文字列に矛盾する情報または混合形式が含まれているためです。

于 2012-07-12T07:12:28.587 に答える
1

ロケールに問題がある場合は、アプリケーション全体のデフォルトのロケールを設定できます

Locale.setDefault(Locale.ENGLISH);

または、英語のロケールを使用してくださいSimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ (zzzz)", Locale.ENGLISH);

Locale.USまたはも使用できますLocale.UK

于 2012-07-12T07:27:05.747 に答える
1

この方法で試してみてください..

System.out.println(new SimpleDateFormat(
                "EEE MMM dd yyyy HH:mm:ss zZ (zzzz)").format(new Date()));

私が得た出力:

Thu Jul 12 2012 12:41:35 IST+0530 (India Standard Time)
于 2012-07-12T07:12:43.893 に答える
1

日付フォーマット文字列を印刷してみることができます:

/**
 * @param args
 */
public static void main(String[] args) {
    SimpleDateFormat sdf = new SimpleDateFormat(
            "EEE MMM dd yyyy HH:mm:ss zZ (zzzz)");
    Date date = new Date();
    try {
        //
        System.out.println(sdf.format(date));
        date = sdf.parse(time);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
于 2012-07-12T07:15:51.087 に答える