获取持续时间以微秒为单位

时间:2018-04-06 10:26:11

标签: java-8 duration

考虑例子:

final Duration twoSeconds = Duration.ofSeconds(2);
//      final long microseconds = twoSeconds.get(ChronoUnit.MICROS); throws UnsupportedTemporalTypeException: Unsupported unit: Micros
final long microseconds = twoSeconds.toNanos() / 1000L;
System.out.println(microseconds);

我想知道是否有更好的方法来获得持续时间(以微秒为单位),而不是手动从纳秒转换。

2 个答案:

答案 0 :(得分:8)

我不会将java.time API用于此类任务,因为您只需使用

即可
long microseconds = TimeUnit.SECONDS.toMicros(2);

来自自{5}以来的concurrency API

但是,如果您已有Duration个实例或任何其他理由坚持使用java.time API,则可以使用

Duration existingDuration = Duration.ofSeconds(2);
long microseconds = existingDuration.dividedBy(ChronoUnit.MICROS.getDuration());

答案 1 :(得分:3)

根据霍尔格的答案,我最喜欢的是:

final long microseconds = TimeUnit.NANOSECONDS.toMicros(twoSeconds.toNanos())