我在Java中有一个日期时间列表(技术上,Joda LocalDateTime对象)。我想打印出列表的精简形式,折叠任何日期范围。类似于以下列表:
2013-11-24
2013-11-25
2013-11-26
2013-11-28
2013-11-29
2013-11-30
2013-12-03
2013-12-05
2013-12-06
2013-12-07
2013-12-08
2013-12-09
2013-12-10
2013-12-11
将打印以下输出:
2013-11-24->2013-11-26, 2013-11-28->2013-11-30, 2013-12-03, 2013-12-05->2013-12-11
除了手动迭代列表,比较下一个值和构造字符串之外,还有更有效的方法吗?
答案 0 :(得分:0)
我为此创建了一个类。创建此类的对象,并使用isFollowing()
检查下一个日期。如果是,则将结束日期设置为选中日期(setEnd(dateToCheck)
)。如果没有,请创建一个新的DateRange对象。您的值必须先排序。
public class DateRange {
private Date mStart;
private Date mEnd;
public DateRange(Date start) {
mStart = start;
mEnd = start;
}
public DateRange(Date start, Date end) {
mStart = start;
mEnd = end;
}
public boolean isInside() {
// create your code
}
public boolean isFollowing(Date dateToCheck) {
// create your code
// check if dateToCheckis after start and end date
// and the difference between end and dateToCheckis must be one day
}
public Date getStart() {
return mStart;
}
public Date getEnd() {
return mEnd;
}
public void setStart(Date start) {
mStart = start;
}
public void setEnd(Date end) {
mEnd = end;
}
}