Java 实例/持续时间

2018-03-12 13:37 更新

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);
  }
}

上面的代码生成以下结果。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号