📅  最后修改于: 2023-12-03 15:16:32.776000             🧑  作者: Mango
Java中使用Duration类表示两个时间点之间的持续时间。持续时间可以是正的(即从较早时间点到较晚时间点)或者负的(即从较晚时间点到较早时间点)。
如果我们想要计算两个时间点之间的持续时间,可以使用Duration.between()
方法来获取。
Instant start = Instant.parse("2021-10-01T12:00:00Z");
Instant end = Instant.parse("2021-10-02T12:00:00Z");
Duration duration = Duration.between(start, end);
System.out.println(duration);
在这个示例中,我们使用Instant
类来表示两个时间点,并且使用Duration.between()
方法得到了这两个时间点之间的持续时间。最终输出的结果是PT24H
,表示这两个时间点相差了24个小时。
我们也可以使用Duration
类的minus()
方法来计算两个持续时间之间的差值。
Duration duration1 = Duration.ofHours(2);
Duration duration2 = Duration.ofMinutes(30);
Duration diff = duration1.minus(duration2);
System.out.println(diff);
在这个示例中,我们创建了两个持续时间,然后使用minus()
方法计算它们之间的差值。最终输出的结果是PT90M
,表示duration1
比duration2
多了90分钟。
除了minus()
方法,Duration
类还提供了其他一些方法来计算和修改持续时间:
plus()
:将两个持续时间相加。negated()
:获取这段持续时间的相反数。abs()
:获取这段持续时间的绝对值。toDays()
、toHours()
、toMinutes()
、toSeconds()
等方法:获取这段持续时间的天数、小时数、分钟数、秒数等。Duration duration1 = Duration.ofDays(1).plusHours(2).plusMinutes(30);
Duration duration2 = Duration.ofHours(3);
Duration sum = duration1.plus(duration2);
Duration negated = sum.negated();
Duration abs = negated.abs();
System.out.println(sum); // PT29H30M
System.out.println(negated); // PT-29H30M
System.out.println(abs); // PT29H30M
long days = abs.toDays(); // 1
long hours = abs.toHours() % 24; // 5
long minutes = abs.toMinutes() % 60; // 30
System.out.printf("%d days %d hours %d minutes\n", days, hours, minutes); // 1 days 5 hours 30 minutes
在这个示例中,我们将一个持续时间拆分成了1天2小时30分钟和3小时两部分,并且演示了如何使用plus()
、negated()
、abs()
方法来计算和修改这些持续时间。最后使用toDays()
、toHours()
、toMinutes()
等方法来获取持续时间的天数、小时数、分钟数等。
总之,Java中的Duration
类提供了很多方便的方法来计算和修改持续时间,我们可以使用这些方法来轻松地完成一些时间计算的任务。