首页  >  文章  >  Java  >  Java 的 SimpleDateFormat 中的 kk:mm、HH:mm 和 hh:mm 有什么区别?

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-09 18:45:02252浏览

What are the differences between kk:mm, HH:mm, and hh:mm in Java's SimpleDateFormat?

简化时间格式:了解 SimpleDateFormat 中的 kk:mm、HH:mm 和 hh:mm

在本次编程探究中,我们探索 Java SimpleDateFormat 类中三种常用时间格式之间的细微区别:kk:mm、HH:mm 和 hh:mm。

格式变体:

  • kk:mm: 24 小时格式,时间范围从 01 到 24。
  • HH:mm: 24 小时格式,时间范围从 00 到 24 23.
  • hh:mm: 12 小时格式,时间范围从 01 到 12,带有 AM/PM 指示器。

直觉和实现:

为了演示这些差异,让我们考虑以下代码片段:

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"));
working2.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:00:00,表示午夜为 00:00。
  • HH:mm: 显示 00:00:00,正确地将午夜表示为 00:00。
  • hh:mm: 意外地显示 05:30:00,尽管指定了 UTC 时区(这应该导致午夜)。

出现此异常的原因是未明确为working2 设置时区。默认情况下,SimpleDateFormat 采用本地时区,这可能与预期的 UTC 格式不一致。

结论:

了解 kk:mm, HH 的细微差别: SimpleDateFormat 中的 mm 和 hh:mm 格式对于准确的时间格式至关重要。通过仔细选择适当的格式并确保正确配置时区,开发人员可以按照自己想要的方式有效地表示时间。

以上是Java 的 SimpleDateFormat 中的 kk:mm、HH:mm 和 hh:mm 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

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