需求:利用java实现设置系统的日期和时间

一、代码Demo1

package com.xu.demo.test;import java.io.IOException;public class SetDateTime {public static void main(String[] args) {//Operating system nameString osName = System.getProperty("os.name");String cmd = "";try {if (osName.matches("^(?i)Windows.*$")) {// Window 系统// 格式 HH:mm:sscmd = "  cmd /c time 2:02:00";Runtime.getRuntime().exec(cmd);// 格式:yyyy-MM-ddcmd = " cmd /c date 2022-05-7";Runtime.getRuntime().exec(cmd);} else {// Linux 系统// 格式:yyyyMMddcmd = "  date -s 20090326";Runtime.getRuntime().exec(cmd);// 格式 HH:mm:sscmd = "  date -s 22:35:00";Runtime.getRuntime().exec(cmd);}} catch (IOException e) {e.printStackTrace();}}
}

思路就是利用Java执行系统的命令行来设置系统时间,运行以后发现并没有设置成功,我们打开Windows的CMD窗口执行cmd /c time 2:02:00发现系统提示如下:

可以看到,上面的代码是无法完成我们的需求的,原因是我们Java代码只能获取到普通用户权限而无法获取到管理员权限,修改时间是需要先获得管理员权限才能执行设置日期和时间这样的危险操作,那接下来怎么办呢?我们继续看下面的代码

二、代码Demo2

package com.huawei.test;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;public class RunBatTest {public static void main(String[] args) {setDateTimeBat();}public static void setDateTimeBat() {try {File temDir = new File("C:\\timeTemp");String filePath = "setDateTime.bat";File batFile = new File(temDir.getPath() + "/" + filePath);if (!temDir.exists()) {temDir.mkdir();batFile.createNewFile();}FileWriter fw = new FileWriter(filePath);BufferedWriter bw = new BufferedWriter(fw);bw.write("@echo off\n");bw.write("%1 mshta vbscript:CreateObject(\"Shell.Application\").ShellExecute(\"cmd.exe\",\"/c %~s0 ::\",\"\",\"runas\",1)(window.close)&&exit\n");bw.write("time 21:35:00");bw.newLine();bw.write("date 2022/04/28");//bw.write("date 2023/10/1");bw.close();fw.close();Process process = Runtime.getRuntime().exec(filePath);process.waitFor();//等上面的执行完毕后再删除文件batFile.delete();} catch (Exception e) {e.printStackTrace();}}
}

可以看到,上面的代码采用了一种新的思路,创建了一个临时的Bat批处理文件,在批处理文件中写入一些命令行,其中下面这行可以让我们获得系统管理员权限

bw.write("%1 mshta vbscript:CreateObject(\"Shell.Application\").ShellExecute(\"cmd.exe\",\"/c %~s0 ::\",\"\",\"runas\",1)(window.close)&&exit\n");

下面两行就是常规的设置日期和时间,最后由java来执行这个Bat批处理文件,经过验证是能成功修改时间的。

bw.write("time 21:35:00");
bw.newLine(); //换行
bw.write("date 2022/04/28");

今天的内容到此为止,如果有什么疑问和错误地方欢迎各位网友在下面评论留言,本人看到后会第一时间回复和解疑,再次感谢。

Java设置系统日期和时间相关推荐

  1. date-打印或者设置系统日期和时间

    date:打印或者设置系统日期和时间. 语法: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss ...

  2. linux-shell命令之date【显示/设置系统日期/时间】

    功能说明:显示或设置系统时间与日期. 语法介绍:date [-d <字符串>][-u][+%H%I%K%l%M%P%r%s%S%T%X%Z%a%A%b%B%c%d%D%j%m%U%w%x% ...

  3. linux使用date命令修改系统日期,使用date命令设置CentOS Linux修改系统日期和时间...

    您可以使用date命令来修改CentOS Linux的时间 修改日期: 将时间设置为2014年6月20日的命令如下: #date -s 2014年6月20日 修改时间: 将系统时间设置为14:20:0 ...

  4. linux clock命令,Centos Linux下使用date/clock/hwclock命令设置系统和硬件时间

    博客迁移之后,没有注意新服务器的系统时间,今天突然感觉到不对,于是调了一下: 设置时间为2010年06月17日,命令如下 1 2 [root@hexuweb101~]$date-s06/17/2010 ...

  5. linux 修改系统时间和日期,Linux 修改系统日期和时间

    Linux 修改系统日期和时间 一.文本模式下修改 命令及参数选项:date -s 示例如下: #date -s 04/11/2008 ------将系统时间设定成2008年4月11日 #date - ...

  6. Windows中获取和设置系统日期时间的C程序

    In this C program, we have to set, get the system's date and time. 在此C程序中,我们必须设置,获取系统的日期和时间. To get, ...

  7. C#设置系统日期时间格式

     当开发时某些软件具有特定的日期格式,需要设置系统日期格式,保证软件正常运行. DllImport需要using System.Runtime.InteropServices; [DllImport( ...

  8. Android 系统(194)---Android实践 -- 设置系统日期时间和时区

    Android实践 -- 设置系统日期时间和时区 转自:https://www.cnblogs.com/Free-Thinker/p/6627813.html 设置系统日期时间和时区 设置系统的日期时 ...

  9. vba更改计算机系统时间,如何设置系统日期,一行VBA编程代码教你学会

    No.1 VBA编程中,获取日期是一个简单的功能,同样对日期进行增减计算处理也是个容易的操作. 本节我们来了解一下关于计算机系统日期的一些操作. DateAdd函数 如上图所示,DateAdd是一个函 ...

最新文章

  1. 上海大学建了一个“突发事件语料库”,包括地震、恐怖袭击等5大类
  2. 页面大小和页表项之间有必然的联系么?【转】
  3. WARNING: at net/core/dev.c:1905 skb_warn_bad_offload+0x94/0xb4() 解决思路
  4. boost::date_time模块测试时间分辨率特征
  5. BZOJ 4002--有意义的字符串(矩阵乘法)
  6. leveldb中为什么L 0层中每个sst文件中key的范围都是有重叠的?
  7. 网络查找文档比自己电脑上还方便?
  8. CSS3新属性:在网站中使用访客电脑里没有安装的字体
  9. HDU1556 Color the ball【差分数组+线段树】
  10. Codeforces Round #468 (Div. 2): D. Peculiar apple-tree(水题)
  11. 让程序员崩溃只需要一句话
  12. 状态机finite-state machine学习笔记2——按键消抖初步(1)
  13. linux系统修改Mac地址
  14. 中大计算机研究生华为,考上中山大学很厉害吗?毕业后有机会去华为吗?本文有答案...
  15. linux下调试paddlelite源码,Lite v2.7 v2.8 端侧部署 Ubuntu编译失败
  16. 兴业数金C语言笔试,2021兴业数金校园招聘C语言开发工程师职位
  17. Sklearn.cluster
  18. 保姆级教程带你在VMware中安装Linux Debinan操作系统
  19. FFMPEG关于avio_alloc_context申请使用内存释放问题
  20. 在VS2103环境中集成Doxygen工具

热门文章

  1. 随机森林算法原理小结
  2. stack canary绕过思路
  3. 基于UNet网络实现的人像分割 | 附数据集
  4. 谷粒商城笔记+踩坑(15)——商品详情搭建+异步编排
  5. 如何从800万数据中快速捞出自己想要的数据?
  6. uni-app的滚动加载 uni-load-more组件使用
  7. Windows环境下执行hadoop命令出现系统找不到指定路径Error
  8. inkscape工具箱:绘制手绘线
  9. 前端解决跨域问题(9个方法)
  10. mysql5.7.38安装教程