将日期列表转换为日期范围字符串

时间:2016-08-04 17:46:53

标签: java algorithm datetime data-structures compression

我在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

除了手动迭代列表,比较下一个值和构造字符串之外,还有更有效的方法吗?

1 个答案:

答案 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;
  }
}