Maison  >  Article  >  Java  >  Comment récupérer l'heure avec précision à partir des serveurs de temps Internet en Java ?

Comment récupérer l'heure avec précision à partir des serveurs de temps Internet en Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-16 19:44:02144parcourir

How to Fetch Time Accurately from Internet Time Servers in Java?

Récupération précise de l'heure à partir des serveurs de temps Internet en Java

La synchronisation précise de l'heure est cruciale pour de nombreuses applications. S'appuyer uniquement sur les paramètres horaires d'un système local peut entraîner des incohérences. Cet article explique comment exploiter les serveurs de temps Internet tels que in.pool.ntp.org pour obtenir l'heure moyenne de Greenwich (GMT) faisant autorité en Java.

Bibliothèque Java pour la synchronisation de l'heure

Pour récupérer l'heure d'un serveur externe, Java fournit la bibliothèque javax.time.ntp. Il permet d'accéder au Network Time Protocol (NTP), un protocole standardisé pour la synchronisation de l'heure.

Récupération de l'heure à l'aide de NTP

Voici un extrait de code pour récupérer l'heure d'un serveur de temps :

import javax.time.ntp.NTPUDPClient;
import javax.time.ntp.TimeInfo;
import java.net.InetAddress;
import java.util.Date;

public class TimeSync {

    public static void main(String[] args) throws Exception {
        // Specify the time server hostname
        String TIME_SERVER = "in.pool.ntp.org";

        // Create an NTP UDP client
        NTPUDPClient timeClient = new NTPUDPClient();

        // Get the server's IP address
        InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);

        // Retrieve time information from the server
        TimeInfo timeInfo = timeClient.getTime(inetAddress);

        // Get the time at which the packet was sent by the server
        long returnTime = timeInfo.getMessage().getTransmitTimeStamp().getTime();

        // Convert the epoch time to a Date object
        Date time = new Date(returnTime);

        // Print the synchronized time
        System.out.println("Current GMT time: " + time);
    }
}

Remarque : Les serveurs NTP fournissent généralement des horodatages avec une valeur élevée précision. Pour une précision optimale, envisagez de faire plusieurs requêtes au serveur et de faire la moyenne des résultats.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn