【发布时间】:2023-01-19 21:51:30
【问题描述】:
我需要将某个日期与当前日期/时间进行比较,以确保它在当月的第一天/小时/分钟/秒之前。为了实现此功能,使用其 getActualMinimum 方法配置 Calendar 实例,但是,今天(星期四,19/01/2023 - 10:40:18 BRT 2023),它呈现了我从未有过的行为面对过。考虑以下代码:
Calendar cal = Calendar.getInstance();
System.out.println("After instantiation: " + cal.getTime());
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
System.out.println("After configuring the Day of Month: " + cal.getTime());
cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY));
System.out.println("After configuring the Hour of day: " + cal.getTime());
cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE));
System.out.println("After configuring the Minutes: " + cal.getTime());
cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND));
System.out.println("After configuring the Seconds: " + cal.getTime());
cal.set(Calendar.MILLISECOND, cal.getActualMinimum(Calendar.MILLISECOND));
System.out.println("After configuring the Millis: " + cal.getTime());
上面的代码,在创建这篇文章的那一刻,将打印到控制台:
After instantiation: Thu Jan 19 10:40:18 BRT 2023
After configuring the Day of Month: Sun Jan 01 10:40:18 BRT 2023
After configuring the Hour of day: Sat Dec 31 23:40:18 BRT 2022
After configuring the Minutes: Sat Dec 31 23:00:18 BRT 2022
After configuring the Seconds: Sat Dec 31 23:00:00 BRT 2022
After configuring the Millis: Sat Dec 31 23:00:00 BRT 2022
有人可以解释为什么在配置一天中的小时后,该值设置为23并不是00?
【问题讨论】:
-
这对我来说很好用。但是你绝对应该为此使用新的
java.time类