用于在java中更改系统日期和时间的代码段

时间:2015-04-19 14:01:51

标签: java datetime

我需要更改系统日期和时间,并且我知道将在命令提示符下执行此操作的" 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();线。

请建议我采取纠正措施,以便开始工作。

2 个答案:

答案 0 :(得分:0)

您希望在日期和时间命令中缺少 -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)。

答案 1 :(得分:0)

代码缺少“start”,因此命令提示符从未被调用

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

添加“开始”后,我得到了预期的结果。

感谢您的帮助,干杯!!