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