2010-03-24 9 views

Respuesta

3

Aquí hay un código que encontré alguna vez más ... y lo estoy usando. esto usa la biblioteca de Apache commons.

// List of time servers: http://tf.nist.gov/service/time-servers.html 

    import java.net.InetAddress; 
    import java.util.Date; 
    import org.apache.commons.net.ntp.NTPUDPClient; 
    import org.apache.commons.net.ntp.TimeInfo; 

    public class TimeLookup { 
    public static final String TIME_SERVER = "time-a.nist.gov"; 

public static void main(String[] args) throws Exception { 
    NTPUDPClient timeClient = new NTPUDPClient(); 
    InetAddress inetAddress = InetAddress.getByName(TIME_SERVER); 
    TimeInfo timeInfo = timeClient.getTime(inetAddress); 
    long returnTime = timeInfo.getReturnTime(); 
    Date time = new Date(returnTime); 
    System.out.println("Time from " + TIME_SERVER + ": " + time); 
} 
} 
0

prestar atención .... timeInfo.getReturnTime() no devuelve la hora actual del timeserver. devuelve la hora local cuando se realizó la solicitud al server.

después de llamar a timeInfo.computeDetails() es posible obtener el desplazamiento por timeInfo.getOffset(). esto devuelve el desplazamiento de la hora local en milisegundos.

para calcular la hora actual se podría hacer algo como:

... 
long systemtime = System.currentTimeMillis(); 
Date realdate = new Date(systemtime + timeInfo.getOffset()); 
... 
0

Gracias Rajendra_Prasad que es verdad

public static void main(String[] args) throws Exception { 
     NTPUDPClient timeClient = new NTPUDPClient(); 
     InetAddress inetAddress = InetAddress.getByName(TIME_SERVER); 
     TimeInfo timeInfo = timeClient.getTime(inetAddress); 
     long returnTime = timeInfo.getReturnTime(); 
     Date time = new Date(returnTime); 
     long systemtime = System.currentTimeMillis(); 
     timeInfo.computeDetails(); 
     Date realdate = new Date(systemtime + timeInfo.getOffset()); 
     System.out.println("Time from " + TIME_SERVER + ": " + time); 
     System.out.println("Time from " + TIME_SERVER + ": " + realdate); 
     System.out.println(""+time.getTime()); 
    } 
+0

En respuesta a la gente en las respuestas de esta manera es una especie de inútil. Realmente no está claro exactamente qué es lo que dices que es "verdad" aquí, y sin saber eso, todo lo que queda es el bloque de código sin explicación. –

Cuestiones relacionadas