在JAVA中增加日期的推荐方法是什么?

问题描述 投票:0回答:1

我正在使用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天。

java
1个回答
5
投票

不要使用Calendar。它是Java早期版本中引入的大量设计不佳的日期/时间API的一部分(在JDK 1.1中引入了Calendar),并被Java 8中引入的java.time包取代。

如果你想在LocalDateTime上添加一天,请使用plusDays

© www.soinside.com 2019 - 2024. All rights reserved.