首页 >Java >java教程 >Java 的 SimpleDateFormat 中的'kk:mm”、'HH:mm”和'hh:mm”有什么区别?

Java 的 SimpleDateFormat 中的'kk:mm”、'HH:mm”和'hh:mm”有什么区别?

Susan Sarandon
Susan Sarandon原创
2024-11-09 12:08:02953浏览

What is the difference between

理解 SimpleDateFormat 中 kk:mm、HH:mm 和 hh:mm 的细微差别

使用 Java 的 SimpleDateFormat 操作日期和日期时此时,辨别“kk:mm”、“HH:mm”之间的细微差别至关重要。和“hh:mm”格式说明符。让我们深入研究一下这些格式:

  • “kk:mm”:24 小时格式 (01-24)

此格式代表时间格式为 24 小时制,小时值范围为 01 到 24。例如 01:00 代表1:00 AM,而 24:00 代表午夜。

  • "HH:mm":24 小时格式 (00-23)

与“kk:mm”类似,“HH:mm”表示 24 小时格式的时间。但是,允许的小时值范围为 00 到 23,这意味着没有“24:00”表示。相反,午夜表示为 00:00。

  • “hh:mm”:12 小时格式(上午/下午 01-12)

此格式采用带有 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn