计算出现时间

时间:2016-02-28 00:20:16

标签: java time milliseconds nanotime timeunit

该程序将向用户显示程序的开始时间,结束时间和经过时间。例如,如果程序在09:23:45开始并在09:23:55结束,那么输出到用户就是这样,开始时间:09h:23m:45s结束时间:09h:23m:55s经过时间00h :00米:10秒。我有问题会显示时间...... 请帮忙

这是主要的

import java.util.concurrent.TimeUnit;
import java.text.SimpleDateFormat;
public class ElapsedTimeWatch {

public static void main(String... args) throws InterruptedException {

    TimeWatch watch = TimeWatch.start();
    SimpleDateFormat dateFormat = new SimpleDateFormat("HH'h':mm'm':ss's'");
    System.out.println("Start Time is : " + dateFormat.format(timestart));
     String.format("%02dh:%02dm:%02ds",
                    TimeUnit.MILLISECONDS.toHours(watch.timestart()),//dateFormat.format(start)
                    TimeUnit.MILLISECONDS.toSeconds(watch.timestart()) -
                            TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(watch.timestart())));









    Thread.sleep(1000 * 10);



    System.out.println("End Time is : " + dateFormat.format(timeend));
     String.format("%02dh:%02dm:%02ds",
                    TimeUnit.MILLISECONDS.toHours(watch.timeend()),
                    TimeUnit.MILLISECONDS.toSeconds(watch.timeend()) -
                            TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(watch.timeend())));









    System.out.println("Elapsed Time custom format: " + watch.toMinuteSeconds());



}
}

Errors for Main

时间表类

import java.util.concurrent.TimeUnit;

public class TimeWatch {

long starts;



private TimeWatch() {
    reset();
}

public static TimeWatch start() {
    return new TimeWatch();
}

public TimeWatch reset() {
    starts = System.currentTimeMillis();
    return this;
}




 public long time() {
    long ends = System.currentTimeMillis();
    return ends - starts;
}

//Start Time
public long timestart() {
   starts = System.currentTimeMillis();
    return starts;
}
//End Time
public long timeend() {
    long ends = System.currentTimeMillis();
    return ends;
}





public long time(TimeUnit unit) {
    return unit.convert(time(), TimeUnit.MILLISECONDS);


public String toMinuteSeconds(){
    return String.format("%d min, %d sec", time(TimeUnit.MINUTES),
            time(TimeUnit.SECONDS) - time(TimeUnit.MINUTES));
}




 }

Errors for TimeWatch Class

1 个答案:

答案 0 :(得分:1)

根据oracle documentation,System.nanoTime()与时钟无关。因此,在这种情况下,我们可以使用System.currentTimeMillis();来启动计时器。一旦计时器停止,我们可以使用以下代码打印失效:

public static void main(String[] args) throws InterruptedException {
    long start = System.currentTimeMillis();
    SimpleDateFormat dateFormat = new SimpleDateFormat("HH'h':mm'm':ss's'");
    Thread.sleep(10000);
    long end = System.currentTimeMillis();
    long difference = end - start;
    System.out.println("Start :" + dateFormat.format(start) );
    System.out.println("End :" + dateFormat.format(end) );
    String format = String.format("%d min, %d sec", 
            TimeUnit.MILLISECONDS.toMinutes(difference),
            TimeUnit.MILLISECONDS.toSeconds(difference) - 
            TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(difference))
        );
    System.out.println(format);
}