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

标签 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

有没有比手动遍历列表、比较下一个值和构造字符串更有效的方法?

最佳答案

我会为此创建一个类。创建此类的对象并使用 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/

相关文章:

php - mysql代码中的时间变化

php - 日期时间,+1 周和 -1 周工作方式不同

java - 从 JNDI 自定义资源中检索附加属性

algorithm - 未加括号的算术表达式

java - 显示三张卡片图像 - JavaFX

performance - 找到到任何子串的最小汉明距离的最快方法?

algorithm - 具有多个约束的多维背包

javascript - 如何确定在javascript中已经过去了多少分钟

java - Jackson 将动态 json 转换为 map

java - 从字符串中解析日期/时间?