SimpleDateFormat の kk:mm、HH:mm、hh:mm のニュアンスを理解する
日付と日付を操作するために Java の SimpleDateFormat を利用する場合時には、「kk:mm」の微妙な違いを識別することが重要です。 「HH:mm」および「hh:mm」形式指定子。これらの形式をそれぞれ詳しく見てみましょう:
この形式は次のことを表します。 24 時間形式の時刻。時の値の範囲は 01 から 24 です。たとえば、01:00 は を表します。午前 1:00、24:00 は午前 0 時を表します。
「kk:mm」と同様に、「HH:mm」は時間を 24 時間形式で表します。ただし、許容される時間の値の範囲は 00 ~ 23 であり、「24:00」の表現はありません。代わりに、真夜中は 00:00 として表されます。
この形式では、AM/PM インジケーター付きの 12 時間制が採用されています。時間の値の範囲は 01 ~ 12 で、01 は午前 1 時を表し、12 は午後 12 時を表します。
例
これらの違いを説明するには、次の点を考慮してください。コードスニペット:
SimpleDateFormat broken = new SimpleDateFormat("kk:mm:ss"); SimpleDateFormat working = new SimpleDateFormat("HH:mm:ss"); SimpleDateFormat working2 = new SimpleDateFormat("hh:mm:ss"); broken.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); working.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); System.out.println(broken.format(epoch)); System.out.println(working.format(epoch)); System.out.println(working2.format(epoch));
出力:
24:00:00 00:00:00 05:30:00
ご覧のとおり、「kk:mm」は値を含む 24 時間形式の時刻を返します。 24:00:00の。 24 時間制には 24:00 の表現がないため、「HH:mm」は時刻を 00:00:00 として正しくフォーマットします。ただし、「hh:mm」では、05:30:00 という予期しない結果が生成されます。これは、「hh:mm」形式で 12 時間制が指定されており、正しい時刻は 00:00 UTC であるため、これに相当する 12 時間表現は 12:00 AM となるためです。ただし、このコードでは「working2」のタイム ゾーンが設定されていないため、デフォルトのシステム タイム ゾーンが使用されます。この場合、システムのタイムゾーンが UTC と一致しない可能性があり、不正確な結果が生じる可能性があります。
以上がJava の SimpleDateFormat の「kk:mm」、「HH:mm」、および「hh:mm」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。