您的位置:首页 > 编程语言 > Java开发

基于Java自动校准电脑时间程序实现

2016-11-16 20:51 483 查看
       最近经常用另一台电脑写工作,这台电脑暑假受潮,主板电池漏电,导致电脑每次开机时间都不准确,对于有强迫症的我,每次开机都要手动把电脑时间调回来心里才舒服,后来嫌麻烦,在网上下载了一个能够自动调整电脑时间的软件,但是这个软件反应很迟钝,获取北京时间要很久,于是乎就下决心,准备用Java写一个能够自动校准电脑时间的软件。在写这个代码的过程中,学到了一些Java中关于网络类的知识,在这篇博客中,把它写出来,加深自己的印象,希望自己能够更快的进步!

       首先把这个程序的思路说明一下,很简单。

       1.获取正确的网络时间。

       2.将网络时间设置给电脑。

       Java中URL类与URLConnection类是我们实现第一步的主角,通过查阅Java的API文档可以知,我们首先通过URL的构造方法URL(String spec)来创建一个URL对象,接着调用openConnection()方法来返回一个URLConnection对象,并通过connec建立连接。重要的一点来了,查阅API文档可知,getDate()方法返回一个long类型的距离格林威治时间1970年1月1日的毫秒数,这个就是我们需要的网络时间!

  那么怎么把的到的网络时间设置给电脑呢?这里我采用的是通过命令行的方式。命令"date YY-MM-DD"便是设置日期,命令"time HH:MM:SS"便是设置时间,当然了,进行日期和时间的设置是需要在管理员权限下进行的。通过Runtime类中的exec()方法可以进行命令行的操作。 

  程序如下:  

import java.io.*;
import java.net.*;
import java.util.*;
import java.text.*;
public class setTime{
public static void main(String[] args){
SimpleDateFormat simdate=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simtime=new SimpleDateFormat("HH:mm:ss");
Date date=getNetworkTime("http://www.baidu.com");
String stime=simtime.format(date);
String sdate=simdate.format(date);
System.out.println("北京时间:"+sdate+" "+stime);
Runtime run=Runtime.getRuntime();
try{
run.exec("cmd /c time "+stime);
run.exec("cmd /c date "+sdate);
System.out.println("设置成功");
Thread.sleep(3000);
}catch(IOException e){
System.out.println(e.getMessage());
}catch(InterruptedException e){
System.out.println(e.getMessage());
}

}

public static Date getNetworkTime(String url1){
try{
URL url=new URL(url1);
URLConnection urlc=url.openConnection();
urlc.connect();
long time=urlc.getDate();
Date date=new Date(time);
return date;
}catch(MalformedURLException e){
System.out.println(e.getMessage());
}catch(IOException e){
System.out.println(e.getMessage());
}
return null;
}
}
运行结果:首先人为的调错电脑时间:15:15:00





接下来运行java程序



这时候可以看到,电脑的时间已经正确!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: