2016-06-07 154 views
2

給定兩個日期(以M,YYYY形式的開始日期和結束日期),我想創建一個每個元素的數組列表,其格式爲M, YYYY在起始日期和結束日期之間,包括在內。獲取給定開始日期和結束日期的日期列表

例如,給定日期和10,2010 2,2011我的名單應該是這樣的:

list = {(10,2010),(11,2010),(12,2010),(1,2011),(2,2011)}; 

我可以做到這一點通過創建一個while循環(而startYear < endYear),佔首發月,爲第12個月的循環,插入日期列表等。

但我覺得必須有一個更有效的方法來解決這個問題,因爲這將需要多個檢查開始月和結束年。有沒有更好的解決方案,我沒有看到?

+0

@ assylias JAVA,對不起,我忘了包括這一點。 – JoshKni8

回答

5

將日期存儲爲對象而不是年,月的「對」會更有意義。例如,使用YearMonthjava.time API中(Java的8和更高版本):

YearMonth from = YearMonth.of(2010, 10); 
YearMonth to = YearMonth.of(2011, 2); 
List<YearMonth> list = new ArrayList<>(); 

for (YearMonth ym = from; !ym.isAfter(to); ym = ym.plusMonths(1)) { 
    list.add(ym); 
} 

或者使用stream API(不知道它是乾淨多在這種情況下):

List<YearMonth> list = Stream.iterate(from, ym -> ym.plusMonths(1)) 
          .limit(MONTHS.between(from, to) + 1) 
          .collect(toList()); 
相關問題