如何知道 Date 对象是否仅表示 Java 中的时间?
How to know if a Date object represents only Time in Java?
我正在尝试将有关日期和时间的数据保存到列表中。比方说,我有 List<Date>
。我有两种类型的字符串格式:dd/mm/yy
和 hh: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.Date
。 Date
是遗留的 Java class,有许多 API 缺陷。它在 Java 8 中被 java.time
包中的 classes 和接口所取代。这些为各种不同的概念提供了不同的 classes。
我建议您阅读 Oracle Java 教程中的 Date-Time 线索以获得基本的了解。这将帮助您决定为您的用例选择正确的 classes。
现实世界的时间很复杂,Java也很复杂。
我正在尝试将有关日期和时间的数据保存到列表中。比方说,我有 List<Date>
。我有两种类型的字符串格式:dd/mm/yy
和 hh: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.Date
。 Date
是遗留的 Java class,有许多 API 缺陷。它在 Java 8 中被 java.time
包中的 classes 和接口所取代。这些为各种不同的概念提供了不同的 classes。
我建议您阅读 Oracle Java 教程中的 Date-Time 线索以获得基本的了解。这将帮助您决定为您的用例选择正确的 classes。
现实世界的时间很复杂,Java也很复杂。