因为我的系统没有自带的电池,所以一旦断电,所有的时间就回到了1980年0点0分。
有没有办法在系统运行的时候,随便访问一个网页,例如google,从网页得到当前的时间的方法?然后就能设定我的系统了(如何设定和读取自己系统的时间我知道用Date()就行了)。不需要非常精确的时间,能精确到小时或者分钟就好啦。我用的是Java,请大侠帮忙解决啊!有没有简单的实现方法?欢迎其他从网络获取时间的实现方法,原则是不要太复杂,多谢多谢!

解决方案 »

  1.   

    既然用到java了,为什么不从数据库里取系统时间呢,从网页上取时间有什么意义,写段简单代码取下系统时间再设成自己机器得系统时间不是更准确?
      

  2.   

    记得这种方法一定要连接外网哦,不然不能实现的,暂且提供你JS方式获取网络时间,设置时间你自己写吧
    <HTML>
    <HEAD>
    <TITLE>国家授时中心 网络服务器时间发布</TITLE>
    <META http-equiv=Content-Type content="text/html; charset=gb2312"><link rel="stylesheet" href="webclass.css" type="text/css">
    </HEAD>
    <BODY background="BGF.GIF" leftMargin=0 topMargin=0 MARGINWIDTH="0" MARGINHEIGHT="0" onLoad="startclock()">
    <div align="center">
      <p><b><font size="3">服务器时间:</font></b>
          <script language="Javascript1.2">
    <!--
    document.write('<b><font face=geneva, arial, helvetica, sans-seif size=5 color=#000000>');
    document.write('2007年6月19日');
    document.write('</font></b>');
    var tags_before_clock = "<b><font face='geneva, arial, helvetica, sans-seif' size='5' color='#000000'>";
    var tags_middle_clock = "</font></b><font face='geneva, arial, helvetica, sans-seif' size='3' color='#666666'>";
    var tags_after_clock  = "</font>";
    if(navigator.appName == "Netscape") {
    document.write('<layer id="clock"></layer><br>');
    }
    if (navigator.appVersion.indexOf("MSIE") != -1){
    document.write('<span id="clock"></span>');
    }
    var col = ":";
    var spc = " ";
    var com = ",";
    var apm = "<br>";
    var hrs = 10;
    var min = 11;
    var sec = 06;
    var nowww = new Date();
    var secc = sec - nowww.getSeconds();
    var ff2 = 1 ;
    var ff3 = 1 ;
    var ff4 = 0 ;
     function MakeArray(size) 
      {
      this.length = size;
      for(var i = 1; i <= size; i++)
      {
      this[i] = "";
      }
      return this;
      }
    function THINPIGServerTime(){
    var noww = new Date();
    sec = (noww.getSeconds() + secc)%60
    if(sec<0)sec=60+sec;
    if(ff4==0 && (sec == 00 || sec == 60)){sec = 0;min++;ff3=1;ff4=1;}
    if(sec != 00 && sec != 60)ff4=0;//使在0秒或60秒一秒钟校正多次不出现分钟增加多次的现象
    if(min == 60){min=00;hrs++;ff2=1}
    if(hrs == 24){hrs=0;}
    if(sec==0 && min==0 && hrs==0){window.location=("stime.asp");}//新的一天的时候刷新页面主要是重新读入日期
    if (hrs<=9&&ff2==1){ff2=0; hrs="0"+hrs;}
    if (sec<=9) sec="0"+sec;
    if (min<=9&&ff3==1) {ff3=0; min="0"+min;}
    if(navigator.appName == "Netscape") {
    document.clock.document.write(tags_before_clock+hrs+col+min+col+sec+apm+spc+tags_middle_clock+spc);
    document.clock.document.close();
    }
    if (navigator.appVersion.indexOf("MSIE") != -1){
    clock.innerHTML = tags_before_clock+hrs+col+min+col+sec+apm+spc+tags_middle_clock+spc;
    }
    }
    setInterval("THINPIGServerTime()",100);//一秒钟自校对10次消除跳秒现象
    //-->
    </script>
    <font size="3">客户机时间:</font>
      <script language="JavaScript"> 
    <!-- Hide
    var timerID = null
    var timerRunning = false
    function stopclock(){
        if(timerRunning)
            clearTimeout(timerID)
        timerRunning = false
    }function startclock(){
        stopclock()
        showtime()
    }
    if(navigator.appName == "Netscape") {
    document.write('<layer id="clocklocal"></layer><br>');
    }
    if (navigator.appVersion.indexOf("MSIE") != -1){
    document.write('<span id="clocklocal"></span>');
    }
      function stopclock (){
      if(timerRunning)
      clearTimeout(timerID);
      timerRunning = false
      }
      function showtime () {  
      var now = new Date();
      var year = now.getYear();
      var month = now.getMonth() + 1;
      var date = now.getDate();
      var hours = now.getHours();
      var minutes = now.getMinutes();
      var seconds = now.getSeconds();
      var timeValue = "";
      timeValue += "<font size=5>"+year + "年";  timeValue += month + "月";
      timeValue += date + "日"+"</font>"+tags_before_clock;
      timeValue += ((hours < 10) ? "0" : "") + hours;
      timeValue += ((minutes < 10) ? ":0" : ":") + minutes;
      timeValue += ((seconds < 10) ? ":0" : ":") + seconds;
      clocklocal.innerHTML = timeValue;
      timezone = new MakeArray(25);
    for(i= -12;i<=12;i++)
    {timezone[i]= hrs-8+i ;
     if (timezone[i] < 0)
                    timezone[i] = ' 昨天 '+(24+timezone[i]%24);

    else
    if (timezone[i] > 24 )
    timezone[i] = ' 明天 '+timezone[i]%24;
    else
    timezone[i] = ' 今天 '+timezone[i]%24;
     }
     minz=minutes+30;
    if (minz >=60)
    {
    minz = minz%60;
    var hz35w = hrs-8-3-1;
     if (hz35w < 0)hz35w = ' 昨天 '+(24+hz35w%24);
     else if(hz35w > 24 )hz35w = ' 明天 '+hz35w%24;
     else hz35w = ' 今天 '+hz35w%24;
    var hz35e = hrs-8+3+1;
     if (hz35e < 0)hz35e = ' 昨天 '+(24+hz35e%24);
     else if(hz35e > 24 )hz35e = ' 明天 '+hz35e%24;
     else hz35e = ' 今天 '+hz35e%24;
    var hz45e = hrs-8+4+1;
     if (hz45e < 0)hz45e = ' 昨天 '+(24+hz45e%24);
     else if(hz45e > 24 )hz45e = ' 明天 '+hz45e%24;
     else hz45e = ' 今天 '+hz45e%24;
    var hz55e = hrs-8+5+1;
     if (hz55e < 0)hz55e = ' 昨天 '+(24+hz55e%24);
     else if(hz55e > 24 )hz55e = ' 明天 '+hz55e%24;
     else hz55e = ' 今天 '+hz55e%24;
    var hz95e = hrs-8+9+1;
     if (hz95e < 0)hz95e = ' 昨天 '+(0-hz95e%24);
     else if(hz95e > 24 )hz95e = ' 明天 '+hz95e%24;
     else hz95e = ' 今天 '+hz95e%24;}
    else
    {
    var hz35w = hrs-8-3;
     if (hz35w < 0)hz35w = ' 昨天 '+(24+hz35w%24);
     else if(hz35w > 24 )hz35w = ' 明天 '+hz35w%24;
     else hz35w = ' 今天 '+hz35w%24;
    var hz35e = hrs-8+3;
     if (hz35e < 0)hz35e = ' 昨天 '+(24+hz35e%24);
     else if(hz35e > 24 )hz35e = ' 明天 '+hz35e%24;
     else hz35e = ' 今天 '+hz35e%24;
    var hz45e = hrs-8+4;
     if (hz45e < 0)hz45e = ' 昨天 '+(24+hz45e%24);
     else if(hz45e > 24 )hz45e = ' 明天 '+hz45e%24;
     else hz45e = ' 今天 '+hz45e%24;
    var hz55e = hrs-8+5;
     if (hz55e < 0)hz55e = ' 昨天 '+(24+hz55e%24);
     else if(hz55e > 24 )hz55e = ' 明天 '+hz55e%24;
     else hz55e = ' 今天 '+hz55e%24;
    var hz95e = hrs-8+9;
     if (hz95e < 0)hz95e = ' 昨天 '+(24+hz95e%24);
     else if(hz95e > 24 )hz95e = ' 明天 '+hz95e%24;
     else hz95e = ' 今天 '+hz95e%24;
    }
      minz=((minz < 10) ? "0" : "") + minz;
      
    clocklocal_12w.innerHTML = timezone[-12]+col+min;
    clocklocal_11w.innerHTML = timezone[-11]+col+min;
    clocklocal_10w.innerHTML = timezone[-10]+col+min;
    clocklocal_9w.innerHTML = timezone[-9]+col+min;
    clocklocal_8w.innerHTML = timezone[-8]+col+min;
    clocklocal_7w.innerHTML = timezone[-7]+col+min;
    clocklocal_6w.innerHTML = timezone[-6]+col+min;
    clocklocal_5w.innerHTML = timezone[-5]+col+min;
    clocklocal_4w.innerHTML = timezone[-4]+col+min;
    clocklocal_3w.innerHTML = timezone[-3]+col+min;
    clocklocal_2w.innerHTML = timezone[-2]+col+min;
    clocklocal_1w.innerHTML = timezone[-1]+col+min;
    clocklocal_0.innerHTML = timezone[0]+col+min;
    clocklocal_1e.innerHTML = timezone[1]+col+min;
    clocklocal_2e.innerHTML = timezone[2]+col+min;
    clocklocal_3e.innerHTML = timezone[3]+col+min;
    clocklocal_4e.innerHTML = timezone[4]+col+min;
    clocklocal_5e.innerHTML = timezone[5]+col+min;
    clocklocal_6e.innerHTML = timezone[6]+col+min;
    clocklocal_7e.innerHTML = timezone[7]+col+min;
    clocklocal_8e.innerHTML = timezone[8]+col+min;
    clocklocal_9e.innerHTML = timezone[9]+col+min;
    clocklocal_10e.innerHTML = timezone[10]+col+min;
    clocklocal_11e.innerHTML = timezone[11]+col+min;
    clocklocal_12e.innerHTML = timezone[12]+col+min;
    clocklocal_35w.innerHTML = hz35w+col+minz;
    clocklocal_35e.innerHTML = hz35e+col+minz;
    clocklocal_45e.innerHTML = hz45e+col+minz;
    clocklocal_55e.innerHTML = hz55e+col+minz;
    clocklocal_95e.innerHTML = hz95e+col+minz;
        timerID = setTimeout("showtime()",200);//一秒钟自校对10次消除跳秒现象
        timerRunning = true;
      }  //--></script>
        </strong></p>
    </div>
    <tr valign="bottom"> 
      <td class="maintext" height="100">&nbsp;</td>
    </tr>
      

  3.   

    哈哈只是解决问题,你又能上网,推荐你用Always Right这个工具,能同步时间,还能清理系统垃圾,哈哈连注册码都给你,name:syg 
    email:Team@EXPLOSiON 
    serial:$7305A2381l81821R176
      

  4.   

    多谢你们的回复,因为这个是个嵌入式系统,断电之后,系统时间就没了。上电之后,能通过GPRS上网,可以访问外网,但是好像挺难连上时间服务器,因为用Unix的"NTP/服务器地址"命令,就同步不了时间。所以想从普通外网,例如google获取当前时间。
    瓜瓜的方法在我的Windows机器上好使,希望在那个系统上也管用:),试试看先,然后回来报告,呵呵。
    另外,有没有在Unix下运行的小工具?开机自动同步时间的,呵呵。
      

  5.   

    多谢各位了。
    用GPRS很难连上时间服务器,干脆自己弄了个小程序在ftp服务器上跑,实时写时间到文件,然后从远程读此文件的时间。
    感谢支持,给分结帖!