【问题标题】:How to subtract dates using java.sql.Timestamp [duplicate]如何使用 java.sql.Timestamp 减去日期 [重复]
【发布时间】:2020-06-30 13:09:23
【问题描述】:

我实际上是在检查使用“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

【问题讨论】:

  • 您在这里犯了一些错误。 1. 你不应该使用 java.sql.Timestamps。 2. 这不是你编写基准的方式,你所做的不会产生任何合理的结果。如果您想了解更多信息,请阅读this。在新的 Java 版本中,有一个用于编写基准测试的内置框架,关于该主题有很好的教程,例如。 here
  • 我建议你不要使用Timestamp。该课程设计不良且早已过时。根据您的具体需求,您可以考虑InstantDuration,两者都来自java.time, the modern Java date and time API

标签: java timestamp


【解决方案1】:

简单的老式方法是对每个 Timestamp 使用 getTime() 方法并减去结果,得到两者之间经过的毫秒数:

long millisElapsed = endTimeStamp.getTime() - startTimeStamp.getTime();

不过,如果使用更现代的 API,您可能会将每个时间戳转换为 Instant,并计算由它们括起来的 Duration

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

Duration 比原始的long 具有更多的结构和支持,但也许它超出了您的需要。

【讨论】:

    猜你喜欢
    • 2016-08-31
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 2011-03-06
    • 1970-01-01
    • 2015-01-03
    相关资源
    最近更新 更多