【发布时间】:2020-07-06 10:11:10
【问题描述】:
我使用compareTo() 约会。它在以下情况下按预期工作。
- 返回 -1 和
- 返回 1
但它在这种情况下不起作用 - > 返回零(0)。如果两个日期相等,那么它应该返回零吧?
Actual Date 1 : 2018-04-16T05:30:00.000+0530
Actual Date 2 : 2018-04-16T00:00:00.000+0530
使用compareTo 方法比较日期
Date 1 :2018-04-16
Date 2 :2018-04-16
Java 为此返回 -1。我不知道为什么会这样。我也试过用equals方法。
EX : date1.equals(dat2) -> 返回 FALSE。
注意:这里 Date1 和 Date2 是通过类型转换获得的。我得到的 JSON 日期为1500544580000(未完全给出任意值)。然后我使用 java 方法比较日期。
示例代码
Date date1= (Date) somemethod("Date"); //2018-04-16 Date date2= (Date) somemethod("Date"); //2018-04-16
if (date1.compareTo(date2) < 0 ) syso(false) else
syso(true)
在上面的方法中 true 应该得到打印吧兄弟?但它不工作/打印。我得到了错误因为该 compareTo 方法返回 -1 而不是返回 0。
【问题讨论】:
-
您能否创建一个简短的小代码示例,在其中创建 2 个日期对象并进行比较?在不知道任何代码的情况下,很难帮助甚至猜测可能发生的事情。
-
日期和时区相等,但时间不相等 (05:30:00.000 vs 00:00:00.000)。它的行为符合预期
-
类 Date 表示特定的时间瞬间,精度为毫秒。您的日期具有相同的年、月、日、时区,但小时和分钟不同。它们不相等。
-
@benjaminfrank 当被问及代码示例时,SO 用户通常期望MCVE。
-
立即停止使用
Date。 它已经过时多年了。从 Java 8 开始,您最好切换到java.time包中提供的更新的 Java 日期和时间 API。请参阅 Arvind Kumar Avinash's answer。