0
点赞
收藏
分享

微信扫一扫

Java--Period/Duration--使用/教程/实例


简介

        本文介绍Java的Period和Duration的用法。

        这两个类用来表示两个日期或时间量之间的差。都是JDK8新增的。

Period

简介

Period基于日期值 ,表示一段时间的年、月、日。

两个日期之间的差赋值给Period

LocalDate startDate = LocalDate.of(2015, 2, 20);
LocalDate endDate = LocalDate.of(2017, 1, 15);
// startDate减endDate
Period period = Period.between(startDate, endDate);
// 任何一个时间单元为负数,则返回true。true:endDate早于startDate
period.isNegative()

获得年月日

period.getYears();
period.getMonths();
period.getDays();

基于年、月、日和周创建Period

如果仅一个值表示,如使用ofDays()方法,那么其他值为0。若仅用ofWeeks,则其天数为week数乘以7.

Period fromUnits = Period.of(3, 10, 10);
Period fromDays = Period.ofDays(50);
Period fromMonths = Period.ofMonths(5);
Period fromYears = Period.ofYears(10);
Period fromWeeks = Period.ofWeeks(40); //280天

基于文本序列创建Period

其格式为“PnYnMnD”:P:period(表示是年月日); Y:year;M:month;D:day

Period fromCharYears = Period.parse("P2Y");
System.out.println(fromCharYears.getYears()+ "(年)");
//2(年)

Period fromCharUnits = Period.parse("P2Y3M5D");
System.out.println(fromCharUnits.getYears() + "(年)" +
fromCharUnits.getMonths() + "(月)" + fromCharUnits.getDays() + "(日)");
//2(年)3(月)5(日)

增减日期

Period period = Period.parse("P2Y3M5D");
period.plusDays(50).getDays(); //55
period.minusMonths(2).getMonths(); //5

Duration

简介

Duration类表示秒或纳秒时间间隔,适合处理较短的时间。

比较两个时间的差 

Instant start = Instant.parse("2017-10-03T10:15:30.00Z");
Instant end = Instant.parse("2017-10-03T10:16:30.00Z");

// start - end
Duration duration = Duration.between(start, end);
// 任何一个时间单元为负数,则返回true。true:end早于start
duration.isNegative();

Duration.between(start, end).getSeconds();
Duration.between(start, end).getNano();

通过LocalTime 类获取创建Duration

LocalTime start = LocalTime.of(1, 20, 25, 1024);
LocalTime end = LocalTime.of(3, 22, 27, 1544);

Duration.between(start, end).getSeconds();
Duration.between(start, end).getNano();

基于天、时、分、秒、纳秒创建Duration

ofDays(), ofHours(), ofMillis(), ofMinutes(), ofNanos(), ofSeconds()。例如: 

Duration fromDays = Duration.ofDays(1);

基于文本序列创建Duration (格式为 “PnDTnHnMn.nS”)

Duration fromChar1 = Duration.parse("P1DT1H10M10.5S");
Duration fromChar2 = Duration.parse("PT10M");

把Duration对象可以转成其他时间单元 

toDays(), toHours(), toMillis(), toMinutes()。例如:

Duration fromDays = Duration.ofDays(1);
fromDays .toHours()

增减Duration

plusX()、minusX()。X表示days, hours, millis, minutes, nanos 或 seconds

duration.plusSeconds(60).getSeconds()

plus()/minus()方法带TemporalUnit 类型参数进行加减:

duration.plus(60, ChronoUnit.SECONDS).getSeconds()


举报

相关推荐

0 条评论