将java.util.Date增加一天的正确方法是什么.
我在想类似的东西
Calendar cal = Calendar.getInstance();
cal.setTime(toDate);
cal.add(Calendar.DATE, 1);
toDate = cal.getTime();
Run Code Online (Sandbox Code Playgroud)
它感觉不对.
Ivi*_*vin 19
如果你不喜欢Tony Ennis的解决方案中的数学计算
Date someDate = new Date(); // Or whatever
Date dayAfter = new Date(someDate.getTime() + TimeUnit.DAYS.toMillis( 1 ));
Run Code Online (Sandbox Code Playgroud)
但是,自从找到这个Q/A后,或多或少,我一直在使用JodaTime,并且最近已经切换到Java 8中的新DateTime(受到 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);
Run Code Online (Sandbox Code Playgroud)
Java 8还添加了类和方法,以便在(现在)遗留日期和日历等与新的DateTime类之间进行互操作,这些类肯定是所有新开发的更好选择.
Mat*_*hen 11
是啊,没错.Java Date API经常出错.我建议你试试Joda Time.它会是这样的:
DateTime startDate = ...
DateTime endDate = startDate.plusDays(1);
Run Code Online (Sandbox Code Playgroud)
要么:
Instant start = ...
Instant end = start.plus(Days.days(1).toStandardDuration());
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
Date someDate = new Date(); // Or whatever
Date dayAfter = new Date(someDate.getTime()+(24*60*60*1000));
Run Code Online (Sandbox Code Playgroud)
最后的数学将一天的秒数转换为毫秒.
| 归档时间: |
|
| 查看次数: |
40555 次 |
| 最近记录: |