【发布时间】:2020-01-29 11:40:54
【问题描述】:
您好,谁能解释一下为什么 Calendar .after 方法会出现这种异常行为
Calendar cal = Calendar.getInstance();
Calendar cal1 = Calendar.getInstance();
cal.set(Calendar.HOUR, 14);
cal1.set(Calendar.HOUR, 13);
System.out.println(cal.after(cal1)+" Cal "+cal.getTime()+" cal1 "+cal1.getTime());
cal.set(Calendar.DATE, Calendar.getInstance().get(Calendar.DATE));
System.out.println(cal.after(cal1)+" Cal "+cal.getTime()+" cal1 "+cal1.getTime());
输出:
true Cal Tue Oct 01 02:55:16 IST 2019 cal1 Tue Oct 01 01:55:16 IST 2019
true Cal Wed Oct 30 02:55:16 IST 2019 cal1 Tue Oct 01 01:55:16 IST 2019
但即使我将 cal1 的日期设置为当前日期,我也不明白为什么 cal 在 cal1 之后,
所以如果 cal 是今天,我将时间指定为 14 小时,然后将日期设置为 cal 中的当前日期,而对于 cal1 我没有。
那么为什么 cal.after(cal1) 在第二个 syso 中仍然显示为 true 而我的 cal1 显然比 cal 大 1 天?
【问题讨论】:
-
解决此类问题的任何建议。
-
我没有收到您的问题。 1) 02:55h 在 01:55h 之后。 2) 10 月 30 日是 在 10 月 1 日之后。所以两个输出都是正确的!不清楚...
-
您希望从该代码中得到什么其他结果?为什么?
-
我建议你不要使用
Calendar。该课程设计不良且早已过时。而是使用来自java.time, the modern Java date and time API 的ZonedDateTime。
标签: java date calendar java.util.calendar