📜  Java8 Duration类(1)

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

Java8 Duration类

Java8中的Duration类用于表示时间的持续时间,支持秒和纳秒单位。它可以用于对时间的计算和测量,比如计算两个时间之间的差,或者测量一个代码块的执行时间。本文将详细介绍Duration类的常用方法。

创建Duration对象

我们可以使用of方法创建一个Duration对象,这个方法接受两个long类型的参数,第一个参数表示持续的秒数,第二个参数表示剩下的纳秒数。下面是一个例子:

Duration duration = Duration.ofSeconds(10, 500000000);
System.out.println(duration); // 输出 PT10.5S

在上面的例子中,我们创建了一个持续时间为10秒500毫秒的Duration对象,并将其输出。输出结果为 PT10.5S,其中PT表示持续时间的格式,T表示时间的开始,S表示秒数。

我们也可以使用ofSeconds方法创建只有秒数的Duration对象:

Duration duration2 = Duration.ofSeconds(10);
System.out.println(duration2); // 输出 PT10S
访问Duration对象的值

我们可以使用不同的方法访问一个Duration对象的值,比如toNanos、toMillis、getSeconds等方法。下面是一个例子:

Duration duration = Duration.ofSeconds(10, 500000000);
long seconds = duration.getSeconds();
long nanos = duration.getNano();
long millis = duration.toMillis();
long micros = duration.toMicros();
long nanos2 = duration.toNanos();
System.out.println(seconds); // 输出 10
System.out.println(nanos); // 输出 500000000
System.out.println(millis); // 输出 10000
System.out.println(micros); // 输出 10000000
System.out.println(nanos2); // 输出 10500000000

在上面的例子中,我们创建了一个持续时间为10秒500毫秒的Duration对象,并使用不同的方法访问它的值。

操作Duration对象

我们可以使用plus、minus、multipliedBy、dividedBy等方法操作Duration对象。这些方法接受一个long类型的参数,表示要操作的数值,比如:

Duration duration = Duration.ofSeconds(10);
Duration duration2 = duration.plus(5, ChronoUnit.SECONDS);
Duration duration3 = duration2.minus(3, ChronoUnit.SECONDS);
Duration duration4 = duration3.multipliedBy(2);
Duration duration5 = duration4.dividedBy(3);
System.out.println(duration); // 输出 PT10S
System.out.println(duration2); // 输出 PT15S
System.out.println(duration3); // 输出 PT12S
System.out.println(duration4); // 输出 PT24S
System.out.println(duration5); // 输出 PT8S

在上面的例子中,我们创建了一个持续时间为10秒的Duration对象,并使用plus、minus、multipliedBy、dividedBy等方法操作它。

比较Duration对象

我们可以使用compareTo和equals方法比较两个Duration对象的大小和相等性,比如:

Duration duration1 = Duration.ofSeconds(10);
Duration duration2 = Duration.ofSeconds(20);
Duration duration3 = Duration.ofSeconds(10, 500000000);
System.out.println(duration1.compareTo(duration2)); // 输出 -1,表示duration1小于duration2
System.out.println(duration2.compareTo(duration1)); // 输出 1,表示duration2大于duration1
System.out.println(duration1.compareTo(duration3)); // 输出 -1,表示duration1小于duration3
System.out.println(duration1.equals(duration2)); // 输出 false,表示duration1不等于duration2
System.out.println(duration1.equals(duration3)); // 输出 false,表示duration1不等于duration3
System.out.println(duration1.equals(Duration.ofSeconds(10))); // 输出 true,表示duration1等于10秒

在上面的例子中,我们创建了三个Duration对象,并使用compareTo和equals方法比较它们的大小和相等性。

总结

Java8中的Duration类可以用于表示和操作时间的持续时间,包括秒和纳秒单位。我们可以使用of、plus、minus、multipliedBy、dividedBy等方法创建和操作Duration对象,使用compareTo和equals方法比较它们的大小和相等性。