如何获取网页中的北京时间

zzw709 2011-01-24 11:13:40
本人想通过http://open.baidu.com/static/time/beijingtime.html获取网页中显示的时间,不知道如何用代码获取,希望朋友们能给我一些代码,谢啦!
...全文
1019 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
victor_yang 2012-01-12
  • 打赏
  • 举报
回复
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;
victor_yang 2012-01-12
  • 打赏
  • 举报
回复
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;
victor_yang 2012-01-12
  • 打赏
  • 举报
回复
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;
shuihan20e 2011-01-28
  • 打赏
  • 举报
回复
等你把网页下载完了,再分析完了,可能时间就不准了,推荐楼上的方法
haochin 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 keeley20 的回复:]
测试了下

http://topic.csdn.net/t/20020331/16/612537.html

这里的时间服务器是有效的,前辈的代码应该可用。
[/Quote]

这个不行吗,现成的。
zzw709 2011-01-27
  • 打赏
  • 举报
回复
webbrowser效率太低了,呵呵,希望可以有效率高的方法
pengxuan 2011-01-25
  • 打赏
  • 举报
回复
用webbrowser载入这个页面,用分析页面源码的方式获取网页中时间显示的网页元素
keeley20 2011-01-24
  • 打赏
  • 举报
回复
测试了下

http://topic.csdn.net/t/20020331/16/612537.html

这里的时间服务器是有效的,前辈的代码应该可用。
keeley20 2011-01-24
  • 打赏
  • 举报
回复
从互联网的时间服务器中获取。
hongqi162 2011-01-24
  • 打赏
  • 举报
回复
你可以是用webbrowse打开这个页面,然后分析它的页面源码


你分析出这个显示的时间有什么用?
haochin 2011-01-24
  • 打赏
  • 举报
回复

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;

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧