¿Cómo convertir un valor de nanosegundos a segundos?
Aquí está el segmento de código:
import java.io.*;
import java.util.concurrent.*;
..
class Stamper {
public static void main (String[] args) {
long start = System.nanoTime();
//some try with nested loops
long end = System.nanoTime();
long elapsedTime = end - start;
System.out.println("elapsed: " + elapsedTime + "nano seconds\n");
//convert to seconds
TimeUnit seconds = new TimeUnit();
System.out.println("which is " + seconds.toSeconds(elapsedTime) + " seconds");
}}
El error es
Stamper.java:16: enum types may not be instantiated.
¿Qué significa esto?

TimeUtil, porque es unenum(enumerador). Si desea usarTimeUnit, debe usarTimeUnit.NANOSECONDS.toSeconds(elapsedTime)en su lugar. ¡Buena suerte!Respuestas:
Bueno, podrías dividir entre 1,000,000,000:
Si usa
TimeUnitpara convertir, obtendrá su resultado como un largo, por lo que perderá la precisión decimal pero mantendrá la precisión del número entero.fuente
convert()ytoFoo()todos los métodos devuelvenlongahora docs.oracle.com/javase/6/docs/api/java/util/concurrent/…TimeUnitsolución resulta en una pérdida de especificidad.TimeUnit.SECONDS.convert(500, TimeUnit.MILLISECONDS);Volveremos0, no0.5. Simplemente depende de su caso de uso cuál de estos es preferible.double seconds = ((double) nanoseconds) / 1E9;haría esto cada vez como una preferencia personal.TimeUnitEnumLa siguiente expresión usa la
TimeUnitenumeración (Java 5 y posterior) para convertir de nanosegundos a segundos:fuente
TimeUnit es una enumeración, por lo que no puede crear una nueva.
Lo siguiente convertirá 1000000000000ns a segundos.
fuente
Para reducir la verbosidad, puede usar una importación estática:
-y en adelante solo escriba
fuente
Deberías escribir :
Asignar el endTime en una variable puede causar unos pocos nanosegundos. En este enfoque, obtendrá el tiempo transcurrido exacto.
Y entonces:
fuente
Esto convertirá un tiempo a segundos en un formato doble, que es más preciso que un valor entero:
fuente
Solución JDK9 + usando java.time.Duration
https://docs.oracle.com/javase/9/docs/api/java/time/Duration.html#ofNanos-long-
https://docs.oracle.com/javase/9/docs/api/java/time/Duration.html#toSeconds--
fuente