我需要更改系统日期和时间,并且我知道将在命令提示符下执行此操作的" 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();线。
请建议我采取纠正措施,以便开始工作。
答案 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('')));
添加“开始”后,我得到了预期的结果。
感谢您的帮助,干杯!!