Java 实例/持续时间
Java日期时间 - Java实例/持续时间
实例和持续时间允许我们记录时间戳和已用时间。
我们可以从瞬间添加和减去持续时间,以获得另一个瞬间。
通过添加两个持续时间,我们可以获得另一个持续时间。
即时和持续时间类别分别存储秒和纳秒。
即时和持续时间更常使用机器级时间。
实例
瞬间表示独特的时刻。
一个时代是用作测量其他时刻的起源的瞬间。 时代是在1970-01-01T00:00:00Z。
两个连续时刻之间的时间是1纳秒。
时代之后的时刻具有正值,而时代之前的时刻具有负值。
在时期的瞬间被分配零值。
我们可以使用Instant.now()来获取使用系统默认时钟的当前时刻。
import java.time.Instant; public class Main { public static void main(String[] args) { Instant instantNow = Instant.now(); System.out.println(instantNow); } }
上面的代码生成以下结果。
例2
您可以从历元偏移创建即时。
以下代码创建一个Instant对象以表示从时代开始的9秒。
import java.time.Instant; public class Main { public static void main(String[] args) { Instant instance9 = Instant.ofEpochSecond(9); System.out.println(instance9); instance9 = Instant.ofEpochSecond(-9); System.out.println(instance9); } }
上面的代码生成以下结果。
注意
两个时刻可以比较知道是否发生在其他之前或之后。
实例和持续时间用于记录两个事件之间的时间戳和经过时间。
持续时间
Duration
对象表示两个时刻之间的时间跨度。
Duration类可以具有正值和负值。
我们可以使用它的一个XXXX()静态工厂方法创建Duration类。
import java.time.Duration; public class Main { public static void main(String[] args) { Duration d1 = Duration.ofDays(2); System.out.println(d1); Duration d2 = Duration.ofMinutes(2); System.out.println(d2); } }
上面的代码生成以下结果。
例3
乘法,除法和否定适用于Duration对象。
import java.time.Duration; public class Main { public static void main(String[] args) { Duration d = Duration.ofSeconds(200); // 3 minutes and 20 seconds Duration d1 = d.multipliedBy(2); // 6 minutes and 40 seconds Duration d2 = d.negated(); // -3 minutes and -20 seconds System.out.println(d); System.out.println(d1); System.out.println(d2); } }
上面的代码生成以下结果。
例4
以下代码显示了如何从Instant中获取秒和纳秒:
import java.time.Instant; public class Main { public static void main(String[] args) { Instant i1 = Instant.now(); long seconds = i1.getEpochSecond(); System.out.println(seconds); int nanoSeconds = i1.getNano(); System.out.println(nanoSeconds); } }
上面的代码生成以下结果。
例5
以下代码显示了如何进行即时和持续时间计算。
import java.time.Duration; import java.time.Instant; public class Main { public static void main(String[] args) { Duration d1 = Duration.ofSeconds(55); Duration d2 = Duration.ofSeconds(-17); Instant i1 = Instant.now(); Instant i4 = i1.plus(d1); Instant i5 = i1.minus(d2); Duration d3 = d1.plus(d2); System.out.println(d3); } }
上面的代码生成以下结果。
更多建议: