4
SimpleDateFormat sdf1 = new SimpleDateFormat(yyyy-MM-dd kk:mm:ss);
SimpleDateFormat sdf2 = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);
Calendar cal = Calendar.getInstance();
Date d = cal.getTime();
System.out.println("Current Time is:"+d);
System.out.println("Time value using kk:" + sdf1.format(d));
System.out.println("Time Value using HH:" + sdf2.format(d));

Result:
Current Time is: Wed Sep 25 00:55:20 IST 2013
Time value using kk : 2013-09-25 24:55:20
Time value using HH : 2013-09-25 00:55:20

kk と HH を使用しているときに、なぜこの動作が時間とともに変化するのか誰にもわかりません。

また、kk は 24:55:20 を返します。これはどこでも役立ちます。私の知る限り、時間範囲は 00:00:00 から 23:59:59 までしかありません。

この範囲を超えるものはありますか?もしそうなら、「kk」の場所はどこですか?

4

5 に答える 5

3

JavaDocsから...

k - 時間 (1-24)
H - 時間 (0-23)

更新しました

これが必要/サポートされる理由については...理由はいくつもありますが、そのいくつかは...

  • 外部システムのサポートを提供します。これにより、さまざまなソースからの日付/時刻文字列を解析できるようになり、開発者のニーズに適応する柔軟性が API に提供されます。
  • あなたのことはわかりませんが、私の目覚まし時計は 1 ~ 24 (1 ~ 12) 時間モードで動作します ;)

意図は、開発者を制限したり、独自の API を作成する必要がないようにしたりすることなく、API が遭遇/必要とする可能性のある形式をできるだけ多く満たすことであったと思います。

あなたのことはわかりませんが、他にやらなければならないことがたくさんあります ;)

于 2013-09-25T06:24:52.413 に答える
1

[Kian Fatt, Ting] バディ違いは、大文字を使用するH is zero to 23 (0-23)場合と、小文字を使用する場合ですk is one to 24 (1-24)。唯一の違いはこれで、どちらも時間を表示するのに適しています。私が以下に提供したJavaドキュメントのリンクを見ることができます。

ソース: SimpleDateFormat

于 2013-09-25T06:32:32.923 に答える
0

日付やカレンダーが使えないと… この授業は間違いやすいです。

jodatime それはより良い解決策です

于 2013-09-25T06:40:42.310 に答える