将 java.util.Date 递增一天
将 java.util.Date 递增一天的正确方法是什么?
我在想这样的事情
Calendar cal = Calendar.getInstance();
cal.setTime(toDate);
cal.add(Calendar.DATE, 1);
toDate = cal.getTime();
它“感觉”不对。
将 java.util.Date 递增一天的正确方法是什么?
我在想这样的事情
Calendar cal = Calendar.getInstance();
cal.setTime(toDate);
cal.add(Calendar.DATE, 1);
toDate = cal.getTime();
它“感觉”不对。
这样就行了。
它“感觉”不对。
如果困扰您的是冗长,欢迎来到Java日期时间API:-)
如果你不喜欢托尼·恩尼斯(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指出这一点)。
在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类之间进行互操作,这无疑是所有新开发的更好选择。