如何使用java.sql.Timestamp减去日期

如何使用java.sql.Timestamp减去日期,java,timestamp,Java,Timestamp,我实际上是在检查集合插入“N”元素所花费的时间 现在我一直在检查ArrayList在插入过程中所花费的总时间 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis()); System.out.println("Start Insertion :: "+startTimeStamp); List<Integer> intList = new ArrayList<>();

我实际上是在检查集合插入“N”元素所花费的时间

现在我一直在检查ArrayList在插入过程中所花费的总时间

Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
    System.out.println("Start Insertion :: "+startTimeStamp);

    List<Integer> intList = new ArrayList<>();
    for (int i = 0; i <= 100000000; i++) {
        intList.add(i);
    }
    Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
    System.out.println("End insertion :: "+endTimeStamp);
    // Total time taken 
    // TODO       
输出: 开始插入:2020-03-19 16:47:27.395
结束插入::2020-03-19 16:48:11.963

传统的简单方法是在每个时间戳上使用getTime方法并减去结果,给出两个时间戳之间经过的毫秒数:

long millisElapsed = endTimeStamp.getTime() - startTimeStamp.getTime();
不过,使用更现代的API,您可能会将每个时间戳转换为一个瞬间,并计算以下各项所包含的持续时间:

Duration elapsedDuration =
        Duration.between(startTimeStamp.toInstant(), endTimeStamp.toInstant());

持续时间比原始长时间具有更多的结构和支持,但可能超出了您的需要。

您在这里犯了一些错误。1.您不应该使用java.sql.timestamp。2.这不是您编写基准的方式,您所做的不会产生任何合理的结果。如果你想了解更多,请阅读。在新的Java版本中,有一个用于编写基准测试的内置框架,有关于这个主题的很棒的教程,例如,我建议您不要使用时间戳。那门课设计得很糟糕,而且早已过时。根据您的确切需求,您可以考虑即时和持续时间,两者都来自。