📜  Java中的持续时间减法(时间)方法与示例(1)

📅  最后修改于: 2023-12-03 15:16:32.776000             🧑  作者: Mango

Java中的持续时间减法(时间)方法与示例

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,表示duration1duration2多了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类提供了很多方便的方法来计算和修改持续时间,我们可以使用这些方法来轻松地完成一些时间计算的任务。