有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在使用Calendar类来增加日期。然而,我所看到的任何一个月都是递增的,直到那个月的第31天,不管这个月是不是二月

下面是我现在使用的代码:

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天


共 (1) 个答案

  1. # 1 楼答案

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

    如果你想在LocalDateTime中添加一天,请使用^{}