我很好奇为什么设置时间(即小时,分钟和秒)时,日期减去一。例如为此代码
Calendar calendarStart = Calendar.getInstance();
Calendar calendarEnd = Calendar.getInstance();
calendarStart.setTime(startDate);
calendarStart.set(11, 0);
calendarStart.set(12, 0);
calendarStart.set(13, 0);
calendarEnd.setTime(endDate);
calendarEnd.set(11, 23);
calendarEnd.set(12, 59);
calendarEnd.set(13, 59);
甚至是此代码
startDate.setHours(0);
startDate.setMinutes(0);
startDate.setSeconds(0);
endDate.setHours(23);
endDate.setMinutes(59);
endDate.setSeconds(59);
比方说,我有August 01, 2018
的开始日期和August 07, 2018
的结束日期,在设置了上述值之后,出来的日期是Tue July 31 00:00:00 CDT 2018
且结束日期是{ {1}}。为什么会发生这种情况,除了在设置后增加一天之外,我还能采取什么措施。
实例化开始和结束:
Mon August 06 23:59:59 CDT 2018
初始化后,它可以正常工作,但是只要设置了值,它就会减去一天。我让它在设置值之前和之后打印值。在达到预期的值之前,但一旦设置了这些值,便会减去日期。
答案 0 :(得分:0)
LocalDate start = LocalDate.of(2018, Month.AUGUST, 1);
LocalDate end = LocalDate.of(2018, Month.AUGUST, 7);
System.out.println("Start is " + start + ". End is " + end + '.');
开始于2018-08-01。结束于2018-08-07。
java.time(现代的Java日期和时间API)中的LocalDate
类表示没有日期的日期。因此,您不需要设置时间(也不能),因此永远不会有任何潜在的副作用。
我严重怀疑您发布的代码是否符合您描述的方式。因此,我认为您的错误在其他地方。但是,如果没有a Minimal, Complete, and Verifiable example,则无法确定。