簡體   English   中英

更改Java中系統日期和時間的代碼段

[英]Code snippet to change system date and time in java

我有一個更改系統日期和時間的要求,並且我知道將在命令提示符下執行此工作的“ date -s”命令。 但是,當我嘗試在Java代碼中添加相同的命令時,它似乎不起作用。 以下是我希望它能正常工作的代碼行:

        String value = "2015-04-12 20:26:14";
        Date date = dateFormat.parse(value);
        value = dateFormat.format(date);
        System.out.println("for debugging");
        final Process dateProcess = Runtime.getRuntime().exec("cmd /c date "+value.substring(0, value.lastIndexOf(' ')));
        System.out.println("step 1");
         dateProcess.waitFor();

        System.out.println("step 2");
        dateProcess.exitValue();
        final Process timeProcess = Runtime.getRuntime().exec("cmd /c time "+value.substring(value.lastIndexOf(' ')+1));
        timeProcess.waitFor();
        timeProcess.exitValue();

當我以管理員身份執行上述代碼段時,該程序掛在dateProcess.waitFor();上。 線。

請建議我采取糾正措施以使其正常工作。

您似乎在日期和時間命令中缺少-s參數,因此您的waitFor()方法永遠不會返回,因為它正在等待用戶輸入。

嘗試改變

final Process dateProcess = Runtime.getRuntime().exec("cmd /c date "+value.substring(0, value.lastIndexOf(' ')));

final Process dateProcess = Runtime.getRuntime().exec("cmd /c date -s "+value.substring(0, value.lastIndexOf(' ')));

與您的時間命令相同。 (假設這僅是Windows)。

代碼缺少“開始”,因此從未調用命令提示符

最終處理dateProcess = Runtime.getRuntime()。exec(“ cmd / c開始日期-s” + value.substring(0,value.lastIndexOf('')));

添加“開始”后,我得到了預期的結果。

感謝您的幫助,干杯!

暫無
暫無

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

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