Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JodaTime中生成日期范围_Java_Jodatime - Fatal编程技术网

Java 在JodaTime中生成日期范围

Java 在JodaTime中生成日期范围,java,jodatime,Java,Jodatime,我需要检查数组列表中是否存在日期(字符串) 我有两个日期,首先我需要在这两个日期之间生成日期范围,并将它们存储在一个数组中。这就是我正在做的 DateTimeFormatter dateFromatter= DateTimeFormat.forPattern("MM/dd/yyyy"); DateTime startDate= formatter.parseDateTime("01/02/2012"); DateTime endDate= formatter.parseDateTime("01

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

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

DateTimeFormatter dateFromatter= DateTimeFormat.forPattern("MM/dd/yyyy");

DateTime startDate= formatter.parseDateTime("01/02/2012");
DateTime endDate= formatter.parseDateTime("01/31/2012");

 List<LocalDate> dates = new ArrayList<LocalDate>();


  int days = Days.daysBetween(startDate, endDate).getDays();
  for (int i=0; i < days; i++) {
不起作用

不管怎样,您真的需要生成每个日期吗?除非我真的需要,否则我会做类似的事情:

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

使用org.joda.time.Interval

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

我来这里是为了这个,但两种解决方案都不为我所接受——我最终得到了以下结果:

int days = Days.daysBetween(startDate, endDate).getDays();

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

对于(int i=0;i),这是不正确的,因为LocalDate“date”只是一个可读取的部分,而不是一个可读取的瞬间。您可以使用startDate和endDate(这是DateTime)创建一个间隔,然后测试date.toDateMidnight()是否在该间隔中,但请小心endDate,因为它在间隔中是独占的。
Interval interval = new Interval(startDate, endDate);  
for (LocalDate date : dates)  
{   
  if (interval.contains(date))  
   // 
int days = Days.daysBetween(startDate, endDate).getDays();

for(int i = 0; i <= days; i++) {
    dates.add(startDate.plusDays(i));
}