3

これのデバッグをどこから始めればよいのか本当にわかりません。

コード:

String date = "Mon, 15 Oct 2012 20:32:12 +0000 (GMT)";

        SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:MM:ss Z");

        try {
            Date date2 = format.parse(date);
            System.err.println("parsed: " + date2);
        }
        catch (ParseException e) {
            System.err.println("Failed to parse: " + format);
        }

出力:

parsed: Fri Aug 15 16:00:12 EDT 2014

なぜこれが2年2か月ずれているのですか?

4

2 に答える 2

9

小さいmmものを数分間使用する

EEE, dd MMM yyyy HH:mm:ss Z
于 2012-10-15T21:44:47.730 に答える
4

Jigar Joshiはすでに主要な質問に回答していますが、フォーマットが無意味な値を黙って受け入れないため、設定DateFormat.setLenient(false)JavaDocを参照)によってこのような多くの解析の問題を回避できるというヒントがあります。

hh2番目のヒント(最近これが私に噛み付いたため)は、HHフォーマット(12時間形式と24時間形式)を簡単に混同できるため、常に午前と午後の両方のタイムスタンプを使用してDateFormatsをテストすることです。それ以外の場合は、テストデータは正常に機能しますが、実際のデータは紛らわしいエラーで失敗します。

于 2012-10-15T21:47:53.987 に答える