理解 SimpleDateFormat 中 kk:mm、HH:mm 和 hh:mm 的细微差别
使用 Java 的 SimpleDateFormat 操作日期和日期时此时,辨别“kk:mm”、“HH:mm”之间的细微差别至关重要。和“hh:mm”格式说明符。让我们深入研究一下这些格式:
此格式代表时间格式为 24 小时制,小时值范围为 01 到 24。例如 01:00 代表1:00 AM,而 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中文网其他相关文章!