在JodaTime中生成日期范围

我需要检查数组列表中是否存在日期(字符串)。

我有两个日期,首先我需要在这两个日期之间生成日期范围并将它们存储在一个数组中。 这就是我在做的事情。

DateTimeFormatter dateFromatter= DateTimeFormat.forPattern("MM/dd/yyyy"); DateTime startDate= formatter.parseDateTime("01/02/2012"); DateTime endDate= formatter.parseDateTime("01/31/2012"); List dates = new ArrayList(); int days = Days.daysBetween(startDate, endDate).getDays(); for (int i=0; i < days; i++) { 

这是我遇到问题的地方。

 Type mismatch: cannot convert from DateTime to LocalDate > LocalDate listOfDates = > startDate.withFieldAdded(DurationFieldType.days(), i); > dates.add(listOfDates); } 

使用org.joda.time.Interval

 Interval interval = new Interval(startDate, endDate); for (LocalDate date : dates) { if (interval.contains(date)) // 

toLocalDate()工作吗?

 LocalDate listOfDates = startDate.withFieldAdded(DurationFieldType.days(), i).toLocalDate(); 

无论如何,你真的需要生成每个日期吗? 除非我真的需要,否则我会做类似的事情:

 Interval interval = new Interval(startDate.withTimeAsStartOfDay(), endDate.withTimeAsStartOfDay().plusDays(1)); boolean isInInterval = interval.contains(date.withTimeAsStartOfDay()); 

我来到这里寻找这个,但我都不接受任何解决方案 – 我最终得到了以下内容:

 int days = Days.daysBetween(startDate, endDate).getDays(); for(int i = 0; i <= days; i++) { dates.add(startDate.plusDays(i)); } 

请记住,LocalDates是不可变的,所以当你调用plusDays(...)时你实际上并没有改变它。 另请注意,我使用<=来包括最后一天(在您的示例中,这将是1月31日)。