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

Gui*_*bbe 6 duration java-8

考虑例子:

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);
Run Code Online (Sandbox Code Playgroud)

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

Hol*_*ger 8

我不会将java.timeAPI用于此类任务,因为您可以简单地使用

long microseconds = TimeUnit.SECONDS.toMicros(2);
Run Code Online (Sandbox Code Playgroud)

来自Java 5以来的并发API.

但是,如果您已有现有Duration实例或任何其他原因坚持使用java.timeAPI,则可以使用

Duration existingDuration = Duration.ofSeconds(2);
long microseconds = existingDuration.dividedBy(ChronoUnit.MICROS.getDuration());
Run Code Online (Sandbox Code Playgroud)

  • @CristianBotiza 确实,不知何故,对较新 Java 版本的依赖消失了。添加了澄清。谢谢你的留言。 (2认同)

Gui*_*bbe 5

根据 Holger 的回答,我最喜欢的是:

final long microseconds = TimeUnit.NANOSECONDS.toMicros(twoSeconds.toNanos())
Run Code Online (Sandbox Code Playgroud)