5

日付を解析するためにこの関数を作成しましたが、これにより例外が発生します: Unparseable date: "Fri Oct 10 23:11:07 IST 2014" (at offset 20) 。このコードの何が問題なのか理解できないので、助けてください。

public Date parseDate() {
    String strDate ="Fri Oct 10 23:11:29 IST 2014";
    String newPattern = "EEE MMM dd HH:mm:ss Z yyyy";
    SimpleDateFormat formatter = new SimpleDateFormat(newPattern);
    try {
        Date date = formatter.parse(strDate);
        return date;
    } catch (java.text.ParseException e) {
        e.printStackTrace();
    }
    return null;
}
4

5 に答える 5

6

パーサーにロケールを使用します。

    SimpleDateFormat formatter = new SimpleDateFormat(newPattern, Locale.US);

これで問題が解決するはずです。少なくとも、あなたの例ではうまくいきます。

編集:

Android と IST のタイムゾーンに問題があるようです。上記のパターンを使用して Android の任意のタイム ゾーンを解析できますが、IST は解析できません。

文字列に IST ゾーンがある場合、簡単なハックはタイムゾーン部分を変更することです。これはAndroidでも機能します:

    String strDate = "Fri Oct 10 23:11:29 IST 2014";
    strDate = strDate.replace(" IST ", " GMT+0530 ");
    String newPattern = "EEE MMM dd HH:mm:ss Z yyyy";

    SimpleDateFormat formatter = new SimpleDateFormat(newPattern, Locale.ENGLISH);
于 2014-12-09T09:38:13.157 に答える
2
 SimpleDateFormat formatter = new SimpleDateFormat(newPattern);
 formatter.setLenient(true);

// フォーマッタを寛大に設定すると問題が解決します

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

于 2014-12-09T10:14:48.447 に答える
0

日付パターンには、ロケールに依存するパターンが含まれています。SimpleDateFormat はさまざまなロケール (ENGLISH、FRENCH、US、JAPANESE... など) での日付の解析をサポートしているため、使用しているロケールを指定する必要があります。

あなたの「IST」から判断すると、あなたのコンピューターの現在のデフォルトのロケールは、おそらく英語でも米国でもありません。文字列「Fri」と「Oct」は英語であるため、デフォルトのロケールでは解析に失敗します。

フォーマッタを次のように編集すると、機能するはずです。

SimpleDateFormat formatter = new SimpleDateFormat(newPattern, Locale.ENGLISH);
于 2014-12-09T10:17:14.663 に答える
0

ドキュメントhttp://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.htmlによると、

Letter  Date or Time Component  Presentation    Examples
z   Time zone   General time zone   Pacific Standard Time; PST; GMT-08:00
Z   Time zone   RFC 822 time zone   -0800
X   Time zone   ISO 8601 time zone  -08; -0800; -08:00

一般的なタイムゾーンzには大文字の代わりに小を使用することになっています。Z

しかし、私はそれを試してみました (Java SE 1.8.0 z) Z

Android007がコメントとして書いたように:「Javaアプリでは正常に動作しますが、Androidでは例外が発生します」-ライブラリが標準のOracle J2SEよりも完全にコントラクトを実装している可能性があります:)

ここも参照してください: https://stackoverflow.com/a/2581073/2886891

于 2014-12-09T09:58:36.957 に答える