2016-02-28 69 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;')。 –