我有一个 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
有没有比手动遍历列表、比较下一个值和构造字符串更有效的方法?
最佳答案
我会为此创建一个类。创建此类的对象并使用 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;
}
}
关于java - 将日期列表转换为日期范围字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38774137/