本人想通过http://open.baidu.com/static/time/beijingtime.html获取网页中显示的时间,不知道如何用代码获取,希望朋友们能给我一些代码,谢啦!

解决方案 »

  1.   

    你可以是用webbrowse打开这个页面,然后分析它的页面源码
    你分析出这个显示的时间有什么用?
      

  2.   

    测试了下 http://topic.csdn.net/t/20020331/16/612537.html这里的时间服务器是有效的,前辈的代码应该可用。
      

  3.   


    function TMain_F.CheckRegTime(RegTimeS:string) : Boolean;
    var
      Idhtp : TIdHTTP;
      Htm : string;
      TimeInt : Int64;
      NetTime,RegTime : TDateTime;
      Settings: TFormatSettings;
    begin
      Idhtp := TIdHTTP.Create(nil);
      try
        Htm := Idhtp.Get('http://open.baidu.com/app?module=beijingtime');
      except
        Htm := '';
      end;
      if Htm = '' then
      begin
        Result := False;
      end else
      begin
        try
          //网络时间
          Htm := Copy(Htm,  AnsiPos('time":',Htm)+Length('time":'),  MaxInt);
          Htm := Copy(Htm,  1,  Pos('}',Htm)-1);
          TimeInt := StrToInt64(Htm);
          TimeInt := TimeInt div 1000;
          NetTime := UnixToDateTime(TimeInt);
          NetTime := IncHour(NetTime,8);
          NetTime := Int(NetTime);
          //注册时间
          GetLocaleFormatSettings(GetUserDefaultLCID, Settings);
          Settings.DateSeparator := '-';
          Settings.TimeSeparator := ':';
          Settings.ShortDateFormat := 'yyyy-mm-dd';
          Settings.ShortTimeFormat := 'hh:nn:ss';
          RegTime := StrToDate(RegTimeS,Settings);
          //对比
          if NetTime > RegTime then
          begin
            Result := False;
          end else
          begin
            Result := True;
          end;
        except
          Result := False;
        end;
      end;
      Idhtp.Free;
    end;
      

  4.   

    用webbrowser载入这个页面,用分析页面源码的方式获取网页中时间显示的网页元素
      

  5.   

    webbrowser效率太低了,呵呵,希望可以有效率高的方法
      

  6.   

    function TFormMain.GetServerTime1: TDateTime;
    var
        Session, HttpFile: HINTERNET;
        szSizeBuffer: Pointer;
        dwLengthSizeBuffer: DWord;
        dwReserved: DWord;
        dwFileSize: DWord;
        dwBytesRead: DWord;
        Contents: PAnsiChar;
        vName,vTemp:string;
    begin
      Memo1.Lines.Clear;
      Session := InternetOpen('', 0, nil, nil, 0); ///初始化WININET.DLL
      HttpFile := InternetOpenUrl(Session, PChar('http://www.beijingshijian.net/'), nil, 0, 0, 0); //连接服务器并读取数据
      dwLengthSizeBuffer := 1024;
      HttpQueryInfo(HttpFile, 5, szSizeBuffer, dwLengthSizeBuffer, dwReserved); //得到页面信息  Contents:=SysGetMem(dwFileSize); //开辟内存  InternetReadFile(HttpFile, Contents, dwFileSize, dwBytesRead); //读取文件
      InternetCloseHandle(HttpFile); //释放HttpFile资源
      InternetCloseHandle(Session); //释放Session资源
      Memo1.Lines.Text := UTF8Decode(StrPas(Contents));
      try    vName:=GetStr(Memo1.Lines.GetText,'</b><a id="t1">','<strong>年</strong>')+'年';
        vTemp:=GetStr(Memo1.Lines.GetText,'<strong>年</strong>',' 星期');
        vTemp:=Trim(vName+ vTemp);
        vTemp:=StringReplace(vTemp,'年','-',[]);
        vTemp:=StringReplace(vTemp,'月','-',[]);
        vTemp:=StringReplace(vTemp,'日','',[]);
        Result:=StrToDate(vTemp);
      except
        end;
        Finalize(Contents); //释放
    end;
      

  7.   

    function TFormMain.GetServerTime2: TDateTime;
    var
    i,j,y,m,d:integer;
      vName,vTemp:string;
    vM1,vM2:TDateTime;
      vHttp:TIdHTTP;
      vText:TStrings;
    begin
      Memo1.Lines.Clear;
      Memo2.Lines.Clear;
      Result:=0;
      if not NetIsConnected then
      Exit;
      vM1:=Now;
      gPageLoaded3:=False;
      vText:=TStringList.Create;
      try
      
        vText.Text:=IdHTTP1.Get('http://time.bj.cn/');
        for i:=0 to vText.Count -1 do
        begin
          vTemp:= vText[i];
          if Pos('class="STYLE1">',vTemp)>0 then
          begin
            vTemp:=Copy(vTemp,Pos('class="STYLE1">',vTemp)+15,Length(vTemp));
            vTemp:=Copy(vTemp,1,Pos('星',vTemp)-1);
            y:=StrToInt(Copy(vTemp,1,Pos('年',vTemp)-1));        vTemp:=Copy(vTemp,Pos('年',vTemp)+2,Length(vTemp));
            m:=StrToInt(Copy(vTemp,1,Pos('月',vTemp)-1));        vTemp:=Copy(vTemp,Pos('月',vTemp)+2,Length(vTemp));
            d:=StrToInt(Copy(vTemp,1,Pos('日',vTemp)-1));        Result:=EncodeDate(y,m,d);
            Exit;
          end;
        end;
      except
        Exit;
      end;
    end;
      

  8.   

    function TFormMain.GetServerTime2: TDateTime;
    var
    i,j,y,m,d:integer;
      vName,vTemp:string;
    vM1,vM2:TDateTime;
      vHttp:TIdHTTP;
      vText:TStrings;
    begin
      Memo1.Lines.Clear;
      Memo2.Lines.Clear;
      Result:=0;
      if not NetIsConnected then
      Exit;
      vM1:=Now;
      gPageLoaded3:=False;
      vText:=TStringList.Create;
      try
      
        vText.Text:=IdHTTP1.Get('http://time.bj.cn/');
        for i:=0 to vText.Count -1 do
        begin
          vTemp:= vText[i];
          if Pos('class="STYLE1">',vTemp)>0 then
          begin
            vTemp:=Copy(vTemp,Pos('class="STYLE1">',vTemp)+15,Length(vTemp));
            vTemp:=Copy(vTemp,1,Pos('星',vTemp)-1);
            y:=StrToInt(Copy(vTemp,1,Pos('年',vTemp)-1));        vTemp:=Copy(vTemp,Pos('年',vTemp)+2,Length(vTemp));
            m:=StrToInt(Copy(vTemp,1,Pos('月',vTemp)-1));        vTemp:=Copy(vTemp,Pos('月',vTemp)+2,Length(vTemp));
            d:=StrToInt(Copy(vTemp,1,Pos('日',vTemp)-1));        Result:=EncodeDate(y,m,d);
            Exit;
          end;
        end;
      except
        Exit;
      end;
    end;