Java在X天后获取日期

时间:2015-03-22 16:32:52

标签: java date calendar increment

我正在设置一个db40数据库,它中填充了我的类Day()的实例,其中包含历史记录中当天的销售信息,以及其ID的整数。 id的格式如下:YYYYMMDD,因此它们都是唯一的。我的数据库按时间顺序设置了正确的数据,但现在我被迫进入并手动编辑id超过一年的数据。

问题:假设第1天是2014年1月1日,格式为:20140101,如何每次正确地将日期增加一天?我之后需要计算424个日期,但是如果没有强制性的话,我想不出一个聪明的解决方案。

理想情况下,我想要这样的事情getDate(ThisDate + 1 Day)

1 个答案:

答案 0 :(得分:2)

当您使用Java 8时,我会使用java.time

  • 将整数(ick)转换为LocalDate
  • 添加您想要的许多天
  • 转换回整数(ick)

类似于:

static LocalDate dateFromId(int id) {
    int year = id / 10000;
    int month = (id / 100) % 100;
    int day = id % 100;
    return LocalDate.of(year, month, day);
}

static int idFromDate(LocalDate date) {
    return date.getYear * 10000
        + date.getMonthValue() * 100 
        + date.getDayOfMonth();
}

static int advanceId(int id, int days) {
    LocalDate original = dateFromId(id);
    LocalDate advanced = original.plusDays(days);
    return idFromDate(advanced);
}

或计算一堆:

LocalDate original = dateFromId(id);
for (int i = 1; i <= count; i++) {
    LocalDate advanced = original.plusDays(i);
    int advancedId = idFromDate(advanced);
    // Use advanced
}