Comment mesurer la durée en secondes, à l'aide du Système.currentTimeMillis ()?

comment convertir System.currentTimeMillis(); pour les secondes?

long start6=System.currentTimeMillis();
System.out.println(counter.countPrimes(100000000)+" for "+start6);

la console me montre 5761455 for 1307816001290. Je ne sais pas combien de secondes c'est.

de l'aide?

40
demandé sur Francisco Noriega 2011-06-11 22:27:57

9 réponses

long start = System.currentTimeMillis();
counter.countPrimes(1000000);
long end = System.currentTimeMillis();

System.out.println("Took : " + ((end - start) / 1000));

UPDATE

final long start = System.nanoTime();
counter.countPrimes(1000000);
final long end = System.nanoTime();

System.out.println("Took: " + ((end - start) / 1000000) + "ms);
60
répondu Nico Huysamen 2013-05-02 13:00:09

TimeUnit

TimeUnit enum intégré dans Java 5 et plus tard.

long timeMillis = System.currentTimeMillis();
long timeSeconds = TimeUnit.MILLISECONDS.toSeconds(timeMillis);
68
répondu JH. 2017-01-22 00:18:24

comme ceci:

(int)(milliseconds / 1000)
14
répondu Stas Jaro 2011-06-11 19:04:28

de votre code il semblerait que vous essayez de mesurer combien de temps un calcul a pris (par opposition à essayer de comprendre ce qu'est le temps actuel).

Dans ce cas, vous devez appeler currentTimeMillis avant et après le calcul, prendre la différence, et diviser le résultat par 1000 pour convertir millisecondes en secondes.

8
répondu NPE 2011-06-11 18:31:36

j'ai écrit le code suivant dans ma dernière mission, il peut vous aider:

// A method that converts the nano-seconds to Seconds-Minutes-Hours form
private static String formatTime(long nanoSeconds)
{
    int hours, minutes, remainder, totalSecondsNoFraction;
    double totalSeconds, seconds;


    // Calculating hours, minutes and seconds
    totalSeconds = (double) nanoSeconds / 1000000000.0;
    String s = Double.toString(totalSeconds);
    String [] arr = s.split("\.");
    totalSecondsNoFraction = Integer.parseInt(arr[0]);
    hours = totalSecondsNoFraction / 3600;
    remainder = totalSecondsNoFraction % 3600;
    minutes = remainder / 60;
    seconds = remainder % 60;
    if(arr[1].contains("E")) seconds = Double.parseDouble("." + arr[1]);
    else seconds += Double.parseDouble("." + arr[1]);


    // Formatting the string that conatins hours, minutes and seconds
    StringBuilder result = new StringBuilder(".");
    String sep = "", nextSep = " and ";
    if(seconds > 0)
    {
        result.insert(0, " seconds").insert(0, seconds);
        sep = nextSep;
        nextSep = ", ";
    }
    if(minutes > 0)
    {
        if(minutes > 1) result.insert(0, sep).insert(0, " minutes").insert(0, minutes);
        else result.insert(0, sep).insert(0, " minute").insert(0, minutes);
        sep = nextSep;
        nextSep = ", ";
    }
    if(hours > 0)
    {
        if(hours > 1) result.insert(0, sep).insert(0, " hours").insert(0, hours);
        else result.insert(0, sep).insert(0, " hour").insert(0, hours);
    }
    return result.toString();
}

il suffit de convertir nano-secondes en milli-secondes.

3
répondu Eng.Fouad 2011-06-11 20:08:30
TimeUnit.SECONDS.convert(start6, TimeUnit.MILLISECONDS);
2
répondu pramodc84 2013-07-18 09:24:44

Java 8 fournit maintenant la méthode la plus concise pour obtenir Unix Timestamp actuel:

Instant.now().getEpochSecond();
2
répondu Scadge 2016-11-29 10:45:41

pour la conversion de millisecondes en secondes, depuis 1 seconde = 103 millisecondes:

//here m will be in seconds
long m = System.currentTimeMillis()/1000;

//here m will be in minutes
long m = System.currentTimeMillis()/1000*60;
1
répondu Manvendra_0611 2015-10-16 09:59:16
// Convert millis to seconds. This can be simplified a bit,
// but I left it in this form for clarity.
long m = System.currentTimeMillis(); // that's our input
int s = Math.max(.18*(Math.toRadians(m)/Math.PI),Math.pow(Math.E, Math.log(m)-Math.log(1000)));
System.out.println( "seconds: "+s );
0
répondu user1717831 2016-03-07 23:32:01