gpt4 book ai didi

java - 如何添加到日期列表?它被覆盖了。我该如何解决?

转载 作者:行者123 更新时间:2023-12-01 10:44:11 25 4
gpt4 key购买 nike

如何添加到日期列表?它被覆盖了。怎么解决呢?

 List<LeaveDetails> leaveList=leaveDetailsService.getleavedatetesting(3);  
List<Date> datelist = new ArrayList<Date>();
System.out.println("leave list is --> "+leaveList.toString());
for (LeaveDetails lds: leaveList){
Date startd = new Date();
startd= lds.getStartDate();

Date endd = new Date();
endd = lds.getEndDate();

System.out.println("start date is ---> "+startd);
System.out.println("end date is ---> "+endd);

for (int i = startd.getDate() ; i<=(endd.getDate()+1);i++){
startd.setDate(i);
datelist.add(startd);
System.out.println(i+"--datelist ---> "+datelist.toString());
}
}
System.out.println("date list is ---> "+datelist.toString());

我想要这样的列表,包括开始日期和结束日期 ->示例日期2,3,4,8,9,10,11。
在控制台中,我得到了这个,

     start date is ---> 2015-12-02    
end date is ---> 2015-12-04

2--datelist ---> [2015-12-02]
3--datelist ---> [2015-12-03, 2015-12-03]
4--datelist ---> [2015-12-04, 2015-12-04, 2015-12-04]
5--datelist ---> [2015-12-05, 2015-12-05, 2015-12-05, 2015-12-05]

start date is ---> 2015-12-08
end date is ---> 2015-12-11

8--datelist ---> [2015-12-05, 2015-12-05, 2015-12-05, 2015-12-05, 2015-12-08]
9--datelist ---> [2015-12-05, 2015-12-05, 2015-12-05, 2015-12-05, 2015-12- 09, 2015-12-09]
10--datelist ---> [2015-12-05, 2015-12-05, 2015-12-05, 2015-12-05, 2015-12-10, 2015-12-10, 2015-12-10]
11--datelist ---> [2015-12-05, 2015-12-05, 2015-12-05, 2015-12-05, 2015-12-11, 2015-12-11, 2015-12-11, 2015-12-11]
12--datelist ---> [2015-12-05, 2015-12-05, 2015-12-05, 2015-12-05, 2015-12-12, 2015-12-12, 2015-12-12, 2015-12-12, 2015-12-12]

date list is ---> [2015-12-05, 2015-12-05, 2015-12-05, 2015-12-05, 2015-12-12, 2015-12-12, 2015-12-12, 2015-12-12, 2015-12-12]

-------------------------------

最佳答案

看看这个循环:

for (int i = startd.getDate() ; i<=(endd.getDate()+1);i++){     
startd.setDate(i);
datelist.add(startd);
System.out.println(i+"--datelist ---> "+datelist.toString());
}

您多次添加对同一 Date 对象的引用,并在每次迭代时对其进行更改。您还假设日期位于同一个月,并且您使用的是已弃用的 Date 方法。

考虑到这些问题,您最好使用 Joda Time 中的 LocalDate 。如果您使用的是 Java 7 或更早版本,或者如果您使用的是 Java 8,则来自 java.time

LocalDate 是不可变的,因此更难意外地多次添加相同的引用 - 而且它实际上代表只是一个日期

关于java - 如何添加到日期列表?它被覆盖了。我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34282881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com