Java 获取 X 天后的日期
Java get the date X days later
我正在建立一个 db40 数据库,它充满了我的 class Day() 的实例,它有历史上那天的销售信息,以及它的 ID 的一个整数。
id 的格式如下:YYYYMMDD,因此它们都是唯一的。我的数据库按时间顺序设置了正确的数据,但现在我被迫进入并手动编辑 id 以获取超过一年的数据价值。
问题:假设第 1 天是 2014 年 1 月 1 日,格式为:20140101,如何正确地将日期每次增加一天?在那之后我需要计算 424 个日期,但如果不强制执行它,我想不出一个聪明的解决方案。
理想情况下,我想要这样的东西 getDate(ThisDate+1 Day)
由于您使用的是 Java 8,因此我将使用 java.time
:
- 将整数 (ick) 转换为
LocalDate
- 添加任意天数
- 转换回整数(恶心)
所以像这样:
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
}
我正在建立一个 db40 数据库,它充满了我的 class Day() 的实例,它有历史上那天的销售信息,以及它的 ID 的一个整数。 id 的格式如下:YYYYMMDD,因此它们都是唯一的。我的数据库按时间顺序设置了正确的数据,但现在我被迫进入并手动编辑 id 以获取超过一年的数据价值。
问题:假设第 1 天是 2014 年 1 月 1 日,格式为:20140101,如何正确地将日期每次增加一天?在那之后我需要计算 424 个日期,但如果不强制执行它,我想不出一个聪明的解决方案。
理想情况下,我想要这样的东西 getDate(ThisDate+1 Day)
由于您使用的是 Java 8,因此我将使用 java.time
:
- 将整数 (ick) 转换为
LocalDate
- 添加任意天数
- 转换回整数(恶心)
所以像这样:
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
}