理解SimpleDateFormat 中kk:mm、HH:mm 和hh:mm 的細微差別
使用Java 的SimpleDateFormat 操作日期和日期時現在,辨別「kk:mm」、「HH:mm」和「hh:mm」格式說明符之間的細微差別至關重要。讓我們深入研究這些格式:
此格式代表24小時格式的時間,小時值範圍為01 到24。例如,01:00 代表凌晨 1:00,24:00 代表午夜。
與「kk:mm」類似,「HH:mm 」表示24小時格式的時間。但是,允許的小時值範圍為 00 到 23,這意味著沒有“24:00”表示。相反,午夜表示為 00:00。
此格式採用帶有AM/PM 指示器的12 小時制。小時值範圍從 01 到 12,其中 01 代表上午 1:00,12 代表下午 12:00。
示例
要說明這些差異,請考慮以下內容代碼片段:
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。 「HH:mm」正確地將時間格式設為 00:00:00,因為 24 小時制中沒有 24: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中文網其他相關文章!