有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用Java将MongoDB对象id转换为Java日期或即时

MongoDB对象ID包含其创建时间的嵌入时间戳。如何在不使用驱动程序库类的情况下用普通Java提取这个时间戳

MongoDB创建的对象id通常如下所示:

5b86bd41840a1be5a55c7022
598af6efe4b09fc2332cf16a
598ad932e4b0f0f169b42d5f

提取目标可以是longjava.util.Datejava.time.Instant


共 (1) 个答案

  1. # 1 楼答案

    基于此page,您可以使用这些静态方法将MongoDB对象ID转换为时间戳java.util.Datejava.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