考虑例子:
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)
我想知道是否有更好的方法来获得持续时间以微秒为单位,而不是手动从纳秒转换.
我不会将java.time
API用于此类任务,因为您可以简单地使用
long microseconds = TimeUnit.SECONDS.toMicros(2);
Run Code Online (Sandbox Code Playgroud)
来自Java 5以来的并发API.
但是,如果您已有现有Duration
实例或任何其他原因坚持使用java.time
API,则可以使用
Duration existingDuration = Duration.ofSeconds(2);
long microseconds = existingDuration.dividedBy(ChronoUnit.MICROS.getDuration());
Run Code Online (Sandbox Code Playgroud)
根据 Holger 的回答,我最喜欢的是:
final long microseconds = TimeUnit.NANOSECONDS.toMicros(twoSeconds.toNanos())
Run Code Online (Sandbox Code Playgroud)