7

いくつかの既存の投稿を調べた後でも、SimpleDateFormat パーサーを機能させることができません。コードは次のとおりです。

SimpleDateFormat df = new SimpleDateFormat(
    "EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
try {
    volcanoListDate = df.parse(currentValue);
} catch (ParseException e) {
    Log.d("DEBUG", e.toString());
    Log.d("DEBUG", currentValue);
}

私はいつもParseExceptionで終わります。デバッグ メッセージの出力は次のとおりです。

06-09 23:52:17.478: DEBUG/DEBUG(2436): java.text.ParseException: 解析不能な日付:
06-09 23:52:17.478: DEBUG/DEBUG(2436): 水、2011 年 6 月 8 日 03:23: 55 -0500

ロケールが設定されており、パターンは正常に見えます。どこが間違っていますか?

4

2 に答える 2

4

解決策は次のとおりです。

            SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
        try {
            volcanoListDate = df.parse(currentValue.replaceAll("\\p{Cntrl}", ""));
        } catch (ParseException e) {
            Log.d("VOLCANO_DEBUG", e.toString());
            Log.d("VOLCANO_DEBUG", currentValue);
        }

重要な変更は、解析された文字列から制御文字を削除する.replaceAll("\\p{Cntrl}", "")です。奇妙なことに、文字列の元である xml に Notepad++ の文字が表示されません。しかし、明らかに何かがあり、それは現在機能しています。

助けてくれてありがとう!

于 2011-06-10T06:08:00.803 に答える
3

タブ (スペースの代わり) などの非印刷文字の入力を確認してください。解析できない理由は、数値の書式設定とはほとんど関係がなく、予期しない文字 (できる) と関係がある場合があります。いつも見えない)。

一部の人々がすでに「私にとってはうまくいく」と報告していることを考えると(@Thanks Bozho!)、入力文字列に印刷できない文字が含まれていると強く疑われます。どこかに垂直タブが埋め込まれている可能性があります。

于 2011-06-09T22:09:10.103 に答える