我正在使用Calendar
类来增加日期。但是,我所看到的任何一个月都是它正在递增到那个月的第31天,无论月份是2月还是没有。
以下是我现在使用的代码:
long curDayDate = 1524787200; // April, 27th, 2018
Instant instant = Instant.ofEpochMilli(curDayDate*1000);
LocalDateTime ldt = instant.atZone(ZoneId.of("GMT")).toLocalDateTime();
int gYear = ldt.getYear();
int gMonth = ldt.getMonthValue();
int gDay = ldt.getDayOfMonth();
Calendar Cal = Calendar.getInstance();
Cal.set(gYear, gMonth, gDay);
for(int i = 0; i < 7; i++) {
// Next day
Cal.add(Calendar.DATE, 1);
System.out.println("Next Year = " + Cal.get(Calendar.YEAR) + ", Next Month = " + Cal.get(Calendar.MONTH) + ", Next Date = " + Cal.get(Calendar.DATE));
}
上述代码一直持续到4月31日,即使4月份没有第31天。
不要使用Calendar
。它是Java早期版本中引入的大量设计不佳的日期/时间API的一部分(在JDK 1.1中引入了Calendar
),并被Java 8中引入的java.time
包取代。
如果你想在LocalDateTime
上添加一天,请使用plusDays
。