2016-02-28 79 views
0

该程序将向用户显示程序的开始时间,结束时间和流逝时间。例如,如果程序在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

+0

*“我有问题会显示时间”*什么问题?请明确点。你到底在想什么? – Andreas

+0

刚刚添加结果 – mar

+0

添加screenshort似乎显示您正在获取。我看到没有错。正如我在之前的评论中所提到的那样,**你在期待什么?** – Andreas

回答

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); 
} 
+0

谢谢!然而,我对编程有点新......我怎么去实现dateFormat?我可以直接将它添加到主体中吗?还是必须使用方法从类中调用它? – mar

+0

@mar看代码。第3行创建'dateFormat'。你不必实现它。 – Andreas

+0

您只需将SimpleDateFormat类导入到您的类中(例如'import java.text.SimpleDateFormat;')。 –