Как преобразовать идентификатор объекта MongoDB в Java Date или Instant, используя Java - PullRequest
0 голосов
/ 29 августа 2018

MongoDB ObjectID содержит встроенную метку времени его создания. Как вы можете извлечь эту метку времени с простой Java без использования классов библиотеки драйверов?

MongoDB создает идентификаторы объектов, которые обычно выглядят так:

5b86bd41840a1be5a55c7022
598af6efe4b09fc2332cf16a
598ad932e4b0f0f169b42d5f

Целью извлечения может быть long, java.util.Date или java.time.Instant.

1 Ответ

0 голосов
/ 29 августа 2018

На основе этой страницы вы можете преобразовать с помощью этих статических методов объектный идентификатор MongoDB в отметку времени, java.util.Date или java.time.Instant объект:

public static Instant convertToInstantFrom(String objectId) {
    return convertToDateFrom(objectId).toInstant();
}

public static Date convertToDateFrom(String objectId) {
    return new Date(convertToTimestampFrom(objectId));
}

public static long convertToTimestampFrom(String objectId) {
    return Long.parseLong(objectId.substring(0, 8), 16) * 1000;
}

Если вы запустите следующий фрагмент кода:

public static void main(String[] args) throws ParseException {
    Stream.of("5b86bd41840a1be5a55c7022", "598af6efe4b09fc2332cf16a", "598ad932e4b0f0f169b42d5f")
            .map(SimpleTests::convertToInstantFrom).forEach(System.out::println);
}

Вы увидите этот результат на консоли:

2018-08-29T15:35:29Z
2017-08-09T11:50:07Z
2017-08-09T09:43:14Z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...