将 java.util.Date 递增一天

2022-09-01 21:45:28

将 java.util.Date 递增一天的正确方法是什么?

我在想这样的事情

        Calendar cal = Calendar.getInstance();
        cal.setTime(toDate);
        cal.add(Calendar.DATE, 1);
        toDate = cal.getTime();

它“感觉”不对。


答案 1

这样就行了。

它“感觉”不对。

如果困扰您的是冗长,欢迎来到Java日期时间API:-)


答案 2

如果你不喜欢托尼·恩尼斯(Tony Ennis)解决方案中的数学

Date someDate = new Date(); // Or whatever
Date dayAfter = new Date(someDate.getTime() + TimeUnit.DAYS.toMillis( 1 ));

但或多或少,自从找到这个问答以来,我一直在使用JodaTime,最近又切换到了Java 8中新的DateTime(它受到Joda的启发,但不是从Joda复制的 - 感谢@BasilBourqueless指出这一点)。

爪哇 8

在Java 8中,几乎所有基于时间的类都有一个.plusDays()方法,使得这个任务变得微不足道:

LocalDateTime.now()  .plusDays(1);
LocalDate.now()      .plusDays(1);
ZonedDateTime.now()  .plusDays(1);
Duration.ofDays(1)   .plusDays(1);
Period.ofYears(1)    .plusDays(1);
OffsetTime.now()     .plus(1, ChronoUnit.DAYS);
OffsetDateTime.now() .plus(1, ChronoUnit.DAYS);
Instant.now()        .plus(1, ChronoUnit.DAYS);

Java 8还添加了类和方法,以便在(现在)旧的Date和Calendar等与新的DateTime类之间进行互操作,这无疑是所有新开发的更好选择。