如何度量Java中经过的时间?

如何度量Java中经过的时间?

我想要这样的东西:

public class Stream{
    public startTime;
    public endTime;

    public getDuration()
    {
        return startTime - endTime;
    }}

同样重要的是,例如,如果启动时间为23:00,结束时间为1:00,则持续时间为2:00。

为了在Java中实现这一点,需要使用哪些类型?


慕田峪7331174
浏览 457回答 3
3回答

萧十郎

不幸的是,到目前为止发布的十个答案中没有一个是完全正确的。如果您正在测量经过的时间,并且希望它是对,是这样,您必须使用System.nanoTime()..你不能用System.currentTimeMillis()除非你不介意你的结果是错的。目的nanoTime就是测量经过时间和目的currentTimeMillis就是测量挂钟时间到了。你不能用这个做另一个用途。原因是没有一个计算机的时钟是完美的,它总是漂移,偶尔需要纠正。这种修正可能是手动进行的,或者在大多数机器中,有一个进程运行并不断地对系统时钟(“挂钟”)进行小更正。这种情况往往会发生。每当有闰秒时,就会发生另一次这样的修正。自nanoTime其目的是测量经过的时间,它不受这些小更正的影响。它是您想要使用的。currentTimeMillis会关闭-甚至可能是阴性。你可能会说,“这听起来不太重要,”我这样说,也许不是,但总的来说,正确的代码不是比错误的代码更好吗?另外,nanoTime不管怎么说,打字的时间都短了。以前发布的免责声明nanoTime通常只有微秒的精度是有效的。而且,可能需要超过一微秒的时间来调用,这取决于环境(就像另一种情况一样),所以不要期望正确地使用非常小的时间间隔。

慕尼黑8549860

你的新班级:public class TimeWatch {         long starts;     public static TimeWatch start() {         return new TimeWatch();     }     private TimeWatch() {         reset();     }     public TimeWatch reset() {         starts = System.currentTimeMillis();         return this;     }     public long time() {         long ends = System.currentTimeMillis();         return ends - starts;     }     public long time(TimeUnit unit) {         return unit.convert(time(), TimeUnit.MILLISECONDS);     }}用法:    TimeWatch watch = TimeWatch.start();     // do something     long passedTimeInMs = watch.time();     long passedTimeInSeconds = watch.time(TimeUnit.SECONDS);之后,可以将时间转换为您喜欢的任何格式,例如使用日历。格雷茨湾
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java