2016-02-28 4 views
0

Ce programme affiche l'heure de début, l'heure de fin et l'heure écoulée d'un programme pour l'utilisateur. Par exemple si le programme a commencé à 09:23:45 et s'est terminé à 09:23:55 alors la sortie à l'utilisateur serait comme telle, heure de début: 09h: 23m: heure de fin de 45s: 09h: 23m: temps 55s écoulé 00h : 00m: 10s. J'ai des problèmes vais afficher le temps ... S'il vous plaît aiderCalcul du temps écoulé

c'est la principale

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

Watch Time Classe

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

* "Je rencontre des problèmes pour afficher l'heure" * Quel problème? Être spécifique. Qu'obtenez-vous et qu'attendez-vous? – Andreas

+0

Juste ajouté des résultats – mar

+0

Ajouté screenshort semble montrer ce que vous obtenez. Je ne vois rien de mal à cela. Comme je l'ai demandé dans le commentaire précédent, ** qu'attendiez-vous? ** – Andreas

Répondre

1

Comme par le oracle documentation, System.nanoTime() n'est pas associé à l'horloge. Donc, dans ce cas, nous pouvons probablement utiliser System.currentTimeMillis(); pour démarrer le minuteur. Une fois le chronomètre arrêté, nous pouvons utiliser le code suivant pour imprimer le lapsus:

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

Merci! Cependant, je suis un peu nouveau à la programmation .... Comment devrais-je mettre en œuvre la dateFormat? Puis-je l'ajouter directement dans la main ou dois-je utiliser une méthode pour l'appeler de la classe? – mar

+0

@mar Regardez le code. La ligne 3 crée 'dateFormat'. Vous n'êtes pas obligé de l'implémenter. – Andreas

+0

Vous avez juste besoin d'importer la classe SimpleDateFormat dans votre classe (par exemple, 'import java.text.SimpleDateFormat;'). –