[英]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.