Спасибо за предложения.Это самое чистое, что я мог придумать:
static Instant getInstantFromMicros(Long microsSinceEpoch) {
return Instant.ofEpochSecond(TimeUnit.MICROSECONDS.toSeconds(microsSinceEpoch), TimeUnit.MICROSECONDS.toNanos(Math.floorMod(microsSinceEpoch, TimeUnit.SECONDS.toMicros(1))));
}
static Instant getInstantFromNanos(Long nanosSinceEpoch) {
return Instant.ofEpochSecond(0L, nanosSinceEpoch);
}
Контрольные примеры:
System.out.println(getInstantFromMicros(1_500_000_000_123_456L));
// 2017-07-14T02:40:00.123456Z
System.out.println(getInstantFromNanos(1_500_000_000_123_456_789L));
// 2017-07-14T02:40:00.123456789Z