web-dev-qa-db-fra.com

Comment mesurer la durée en secondes à l'aide de System.currentTimeMillis ()?

Comment convertir System.currentTimeMillis(); en secondes?

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

La console me montre 5761455 for 1307816001290. Je ne peux pas lire le nombre de secondes.

De l'aide?

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

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

METTRE À JOUR

Une solution encore plus précise serait:

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

System.out.println("Took: " + ((end - start) / 1000000) + "ms);
62
Nico Huysamen

TimeUnit

Utilisez le TimeUnitenum intégré à Java 5 et versions ultérieures.

long timeMillis = System.currentTimeMillis();
long timeSeconds = TimeUnit.MILLISECONDS.toSeconds(timeMillis);
71
JH.

ainsi:

(int)(milliseconds / 1000)
15
Stas Jaro

D'après votre code, il semblerait que vous essayez de mesurer la durée d'un calcul (au lieu d'essayer de déterminer l'heure actuelle).

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 les millisecondes en secondes.

8
NPE

J'ai écrit le code suivant dans ma dernière mission, cela 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 les nanosecondes en millisecondes.

3
Eng.Fouad

Java 8 fournit maintenant la méthode la plus concise pour obtenir l’horodatage Unix actuel:

Instant.now().getEpochSecond();
2
Scadge
TimeUnit.SECONDS.convert(start6, TimeUnit.MILLISECONDS);
2
pramodc84
// 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 );
1
user1717831

Pour la conversion de millisecondes en secondes, puisque 1 seconde = 10³ 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
Manvendra_0611