【问题标题】:Count runtime Java [closed]计算运行时 Java [关闭]
【发布时间】:2021-11-27 18:32:08
【问题描述】:

这是一份大学工作。

Java 语言/我使用 Eclipse IDE

我需要计算我的程序的运行时间。

我想打印运行时。

例子:

import java.time.LocalDateTime;

...
LocalDateTime start;
LocalDateTime end;

start = LocalDateTime.now();

...
xx my code xxx
...

end = LocalDateTime.now();

<<here I have doubts

我需要计算“结束-开始”并将结果传递给字符串

【问题讨论】:

标签: java time count runtime


【解决方案1】:

tl;博士

Duration              // Represent a span-of-time unattached to the timeline on a scale of hours-minutes-seconds. 
.between(             // Calculate time elapsed between two `Instant` objects. 
    then ,            // An `Instant` object instantiated earlier.
    Instant.now()     // Capture the current moment as seen in UTC (an offset of zero hours-minutes-seconds). 
)                     // Returns a `Duration` object.
.toString()           // Generate text in standard ISO 8601 format.

LocalDateTime 不能代表片刻

LocalDateTime 是跟踪时间轴上特定点的错误类。该类故意缺少时区或从 UTC 偏移的上下文。所以它不能代表片刻。我无法想象调用LocalDateTime.now() 是正确的做法。

例如,如果您要计算发生Daylight Saving Time (DST) 切换的经过时间,您的结果将不正确。 LocalDateTime 类会忽略该时区中的任何偏移更改。

使用 java.time.Instant 跟踪经过的时间

改为使用Instant

Instant start = Instant.now() ;
…
Instant end = Instant.now() ;

java.time.Duration 表示经过的时间

使用Duration 类计算经过的时间。

Duration elapsed = Duration.between( start , end ) ;

以标准ISO 8601 格式生成文本:PnYnMnDTnHnMnS。示例:PT30M 正好一个半小时。

String output = elapsed.toString() ;

要生成其他格式的文本,请通过调用to…Part 方法访问这些部分。

【讨论】:

    最近更新 更多