2015-12-15 31 views
0

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

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()); 

我想要这样的列表,包括startdate和enddate - >例如日期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]  

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

回答

1

看这个循环:

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

考虑到这些问题,你会最好使用LocalDate无论是从Joda Time,如果你使用的是Java 7或更早版本,或者从java.time,如果你使用的是Java 8

LocalDate是不可改变,所以很难无意中多次添加相同的参考文件 - 它确实代表只是一个日期

相关问题