1

私の入力は次のように文字列形式です。

3/4/2010 10:40:01 AM
3/4/2010 10:38:31 AM

私のコードは次のとおりです。

DateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss aa");
            try
            {
                Date today = dateFormat.parse(time);
                System.out.println("Date Time : " + today);

            }
            catch (ParseException e)
            {
                e.printStackTrace();
            }

出力は次のとおりです。

Sun Jan 03 10:38:31 AST 2010
Sun Jan 03 10:40:01 AST 2010

その日(太陽)がどこから来たのかわかりませんか?または(AST)?なぜ日付が間違っているのですか?元の文字列の日付と同じ形式を維持し、それをDateオブジェクトにしたかっただけです。

Netbeans6.8Macバージョンを使用しています。

4

5 に答える 5

7

mmではなくMMにする必要があります。小文字のmmは数か月ではなく、数分です。

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa");
于 2010-03-21T09:41:10.460 に答える
4

MMmm数ヶ月ではありません。あなたはmm2回使用しています-そして論理的には、それは同じことです-分。

于 2010-03-21T09:42:16.957 に答える
3

日付を元の形式で印刷する場合は、次の形式の方法を使用します。

System.out.println("Date Time : "+ dateFormat.format(today));

「奇妙な」形式は、DateのtoString実装に由来し、javadocは次のように述べています。 このDateオブジェクトを次の形式の文字列に変換します。

dow mon dd hh:mm:ss zzz yyyy

「元の文字列の日付と同じ形式を維持し、それをDateオブジェクトにしたかっただけです。」

Dateオブジェクトは、特定の瞬間を表すことを目的としています。元の文字列の形式を保持することはできません。そのため、DateFormatクラスがあります。

于 2010-03-21T09:43:59.750 に答える
2

答えは簡単です。意図したdateFormatバージョンではなく、今日のDate.toString()値を表示しました。必要なものは次のとおりです。

System.out.println("Date Time : " + dateFormat.format(today) );
于 2010-03-21T09:46:43.107 に答える
1

System.out.println()を使用してDateを出力すると、DateオブジェクトでtoString()メソッドが呼び出されます。

toString()で使用されるフォーマット文字列は、曜日とタイムゾーンが出力に表示される原因です。

これは、Duffyが指摘した構文解析の間違いとは別です。

于 2010-03-21T09:41:56.847 に答える