首頁 >Java >java教程 >如何用Java從Internet時間伺服器準確取得時間?

如何用Java從Internet時間伺服器準確取得時間?

Patricia Arquette
Patricia Arquette原創
2024-11-16 19:44:02312瀏覽

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

在 Java 中從 Internet 時間伺服器準確獲取時間

準確同步時間對於許多應用程式至關重要。僅依賴本地系統的時間設定可能會導致不一致。本文探討如何利用 Java 中的 in.pool.ntp.org 等網路時間伺服器來取得權威的格林威治標準時間 (GMT)。

Java 時間同步函式庫

為了從外部伺服器擷取時間,Java 提供了 javax.time.ntp 函式庫。它允許存取網路時間協定 (NTP),這是一種用於時間同步的標準化協定。

使用NTP 檢索時間

以下是從時間伺服器:

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);
    }
}

注意: NTP 服務器通常提供高精度的時間戳。為了獲得最佳準確性,請考慮向伺服器發出多個請求並對結果求平均值。

以上是如何用Java從Internet時間伺服器準確取得時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn