自动同步/校准系统时间

电脑的主板有点问题,总不能保存BIOS设置,还有系统时间也老不准,每回彻底断电后时间就回到了2004年的某天去了,这对一些软件的使用和正常工作造成了困扰,又不想把板子弄去修那么麻烦了,所以就琢磨着写个小程序自动校准时间。初步的设想是获取网络上某台计算机的时间,然后对应设置我的系统时间。

说干就干,开始是打算用VC++写的,找了一些资料发现我目前还很难实现,所以就考虑改用在Web相关方面得天独厚的Java。

最后就出来了下面的这样一个小程序,它的原理与流程是这样:先获取网络上某主机(这里是用的搜狐的服务器)的时间,然后用CMD命令date与time来分别设置系统日期与时间。详细程序如下:

import java.net.*;
import java.util.Date;
import java.util.Calendar;

public class ReviseTime{
public static void main(String[] args) throws Exception{
URL URL=new URL(”http://www.sohu.com“);
URLConnection urlcon=URL.openConnection();
Date date = new Date(urlcon.getDate());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 将时间提前5分钟
cal.add(Calendar.MINUTE, 5);
// 设置日期
String cmd = “cmd /c date “;
cmd += cal.get(Calendar.YEAR)+ “/” + (cal.get(Calendar.MONTH)+1) + “/” + cal.get(Calendar.DAY_OF_MONTH);
Runtime.getRuntime().exec(cmd);
// 设置时间
cmd = “cmd /c time “;
cmd += cal.get(Calendar.HOUR_OF_DAY)+ “:” + cal.get(Calendar.MINUTE) + “:” + cal.get(Calendar.SECOND);
Runtime.getRuntime().exec(cmd);
}
}

然后把编译好的ReviseTime放到某个文件夹下,再在这个文件夹下建个批处理文件Auto.bat,内容就两句话:

java ReviseTime
exit

即为先执行此程序修改系统时间,然后自动退出执行时的控制台窗口。

再把此批处理的快捷方式放置一个到自动启动的文件夹,这样就可以实现每次开机自动校准时间了。

你可能感兴趣的:(Java)