如何知道 Date 对象是否仅表示 Java 中的时间?

How to know if a Date object represents only Time in Java?

我正在尝试将有关日期和时间的数据保存到列表中。比方说,我有 List<Date>。我有两种类型的字符串格式:dd/mm/yyhh:mm。好吧,我可以使用 SimpleDateFormat 轻松地格式化和创建 java.util.Date 的实例。但是,当我尝试打印该对象时,我将时间数据保存到其中的对象打印如下:

Thu Jan 01 06:30:00 AZT 1970

如何区分这两者并获得以下输出:

06:30

注意:年份可能早于 1970 年。

感谢您的帮助,感谢您付出的努力。

How to know if a Date object represents only Time in Java?

没有办法可靠地做到这一点。您用来表示时间的 Date 的每个值 表示有效日期。你无法区分这两种情况……除非使用 不可靠 启发式。

真正的问题是你不应该使用 Date 来表示时间。

  • 一个Date表示时间连续体中的一个点。
  • 一个时间可以是一个持续时间,也可以是多个时间点,具体取决于您的使用方式。 (这取决于您的用例。)

事实上,您可能根本没有使用 java.util.DateDate 是遗留的 Java class,有许多 API 缺陷。它在 Java 8 中被 java.time 包中的 classes 和接口所取代。这些为各种不同的概念提供了不同的 classes。

我建议您阅读 Oracle Java 教程中的 Date-Time 线索以获得基本的了解。这将帮助您决定为您的用例选择正确的 classes。

现实世界的时间很复杂,Java也很复杂。