簡體   English   中英

使用Java設置系統時間的毫秒數

[英]Setting milliseconds of System time with java

使用Java在Windows操作系統上是否可以用毫秒為單位設置系統時間? 我正在嘗試在幾台計算機之間同步時鍾,但OS API似乎僅提供以下格式的設置時間: HH:MM:SS

這是我嘗試的:

public static void main(String[] args) throws InterruptedException, IOException {


    String time="10:00:20"; // this works

    String timeWithMiliseconds = "10:00:20.100"; // this doesn't change time at all

    Runtime rt = Runtime.getRuntime();
    rt.exec("cmd /C time " + time);


}

我想知道如果無法設置毫秒組件,NTP客戶端如何工作?

解決此問題的一種方法可能是計算服務器應該到達下一秒的時間(以毫秒為單位),然后休眠該時間。 有沒有更好,更直接的方法來實現這一目標?

如immibis所述,您可以使用Windows函數SetSystemTime來設置時間。

在下面找到一個使用JNA 4.2調用Windows函數的代碼段

Kernel32 kernel = Kernel32.INSTANCE;
WinBase.SYSTEMTIME newTime = new WinBase.SYSTEMTIME();
newTime.wYear = 2015; 
newTime.wMonth = 11;
newTime.wDay = 10;
newTime.wHour = 12;
newTime.wMinute = 0;
newTime.wSecond = 0;
newTime.wMilliseconds = 0;
kernel.SetSystemTime(newTime);

有關更多信息,請查看JNA的源代碼以及SetSystemTime Windows函數SYSTEMTIME結構的那些鏈接。

2009年開始介紹JNA。 使用JNA簡化本機代碼訪問

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM