0

私は Java での日付の処理の専門家ではありませんが、この動作を理解できません。
これが私のコードです

Date from = new SimpleDateFormat("dd/MM/yyyy").parse("05/07/2013");
System.out.println(from);


この出力が得られました

Sat Jul 05 00:07:00 PKT 2013


これは 2 番目の別のコード スニペットです。

Date from = new SimpleDateFormat("dd/mm/yyyy").parse("05/07/2013");
System.out.println(from);


これにより、次の出力が得られました。
Sat Jan 05 00:07:00 PKT 2013

今注目すべきはフォーマットです。
この形式は正しい出力を与えましdd/MM/yyyyたが、小さいこの形式は間違った出力を与えました(常に月で与えます).samll mは分、大文字のMは月であると述べられているドキュメントを読みました私の質問はできますかここで小さな m を使用したことはありませんか? いいえの場合、なぜそれが結果を出しているのか、また、これが基本的な質問であることはわかっていますが、検索した後、理解できるものが見つからなかったので、投稿しました.ThanksMMdd/mm/yyyymmjan
jan

4

5 に答える 5

4
Date from = new SimpleDateFormat("dd/mm/yyyy").parse("05/07/2013");

あなたのフォーマットでmmは分です。MM月用です。

これらのフォーマット プレースホルダーは固定されています。小さな m は常に分です。これはデフォルトの Month 値であるため、1 月です。

于 2013-05-07T08:19:03.267 に答える
4

mm は分なので、日付に月はありません。したがって、月は0(1月)に初期化されていると思います

于 2013-05-07T08:20:02.847 に答える
0

失敗しない理由は、デフォルトでフォーマッターが寛大だからです。失敗させたい場合はsetLenient(false)、フォーマッタオブジェクトで。

あなたの例では07が分として読み取られるので、あなたの場合は失敗するとは思いませんが。

于 2013-05-07T08:23:02.190 に答える
0

使用時

Date from = new SimpleDateFormat("dd/mm/yyyy").parse("05/07/2013");

単純な mm は分を表すため、月の値は 0 であると想定されるため、デフォルト値として Jan が指定されるため、月には MM を使用します。

于 2013-05-07T08:23:47.250 に答える
0

calendar.clear()それは1970 年 1 月 1 日を指していると思います。次に、解析されたデータ = 2013 年 (YY)、5 日 (dd)、7 分 (mm) が追加されます。MM月に使用

于 2013-05-07T08:24:54.697 に答える