Как мне создать Java Instant из эпох микросекунд или наносекунд? - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь стандартизировать формат меток времени для моего проекта, где источник сообщает с точностью до микросекунды.Я пытаюсь выяснить, существует ли чистый или минимальный подход, который не требует использования рукописных констант.

1 Ответ

1 голос
/ 10 мая 2019

Спасибо за предложения.Это самое чистое, что я мог придумать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...