Ugu*_*tun 14 java datetime java-8 java-time
我在Java 8中编写了一些使用时间算术的代码.我意识到我可以在不同的方面实施.让我们看看下面的简单代码.当然它是相同的结果,但我混淆了哪种方式主要应用或最有效地在Java 8中进行算术运算?
LocalTime time = LocalTime.now();
// 1st way
LocalTime plusOp = time.plus(Duration.ofMinutes(10L));
// 2nd way
LocalTime plusOp2 = time.plus(10L, ChronoUnit.MINUTES);
System.out.println(plusOp);
System.out.println(plusOp2);
// 3. way simply
time.plusMinutes(10L);
Run Code Online (Sandbox Code Playgroud)
提前致谢.
Jon*_*eet 20
Duration只能处理固定长度的时间段,例如"小时","分钟","秒","天"(每天恰好24小时).您不能使用"月" Duration,因为一个月的长度不同.
Period- 其他常见TemporalAmount实施 - 分别代表年,月和日.
我个人会建议:
plusXxx方法,例如time.plusMinutes(10).这很容易阅读.PeriodDuration以下是在哪里Period和Duration可以有所不同的示例:
import java.time.*;
public class Test {
public static void main(String[] args) {
ZoneId zone = ZoneId.of("Europe/London");
// At 2015-03-29T01:00:00Z, Europe/London goes from UTC+0 to UTC+1
LocalDate transitionDate = LocalDate.of(2015, 3, 29);
ZonedDateTime start = ZonedDateTime.of(transitionDate, LocalTime.MIDNIGHT, zone);
ZonedDateTime endWithDuration = start.plus(Duration.ofDays(1));
ZonedDateTime endWithPeriod = start.plus(Period.ofDays(1));
System.out.println(endWithDuration); // 2015-03-30T01:00+01:00[Europe/London]
System.out.println(endWithPeriod); // 2015-03-30T00:00+01:00[Europe/London]
}
}
Run Code Online (Sandbox Code Playgroud)
在您真正需要之前我不会担心效率 - 此时您应该有一个基准测试,以便您可以测试不同的选项.