码迷,mamicode.com
首页 > 其他好文 > 详细

实时获取网络时间 并转换为北京时间的函数

时间:2015-05-30 09:16:28      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:


unit
Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,Winapi.msxml, System.DateUtils, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} //实时获取网络时间的函数, 得到的是格林威治时间; 默认从 sohu 服务器获取, 因为它最快, 平均只需 15 毫秒 function GetNetTime(aUrl: WideString = http://www.sohu.com): string; begin with CoXMLHTTP.Create do begin open(Post, aUrl, False, EmptyParam, EmptyParam); send(EmptyParam); Result := getResponseHeader(Date); end; end; //格林威治时间(字符串)转换到北京时间 1 function GMT2BjDateTime(const GMT: string): TDateTime; var A: TArray<string>; begin A := GMT.Split([,, ], ExcludeEmpty); //XE4 支持 with TStringList.Create do begin CommaText := Jan=1,Feb=2,Mar=3,Apr=4,May=5,Jun=6,Jul=7,Aug=8,Sep=9,Oct=10,Nov=11,Dec=12; A[2] := Values[A[2]]; Free; end; Result := StrToDateTime(Format(%s/%s/%s %s, [A[3], A[2], A[1], A[4]]), FormatSettings.Create(2052)); Result := Result + 8/24; //换算成北京时间 end; //格林威治时间(字符串)转换到北京时间 2 function GMT2BjDateTime2(const GMT: string): TDateTime; var A: TArray<string>; begin A := GMT.Split([,, ], ExcludeEmpty); //XE4 支持 with TStringList.Create do begin CommaText := Jan=1,Feb=2,Mar=3,Apr=4,May=5,Jun=6,Jul=7,Aug=8,Sep=9,Oct=10,Nov=11,Dec=12; A[2] := Values[A[2]]; Free; end; Result := StrToDateTime(Format(%s/%s/%s %s, [A[3], A[2], A[1], A[4]]), FormatSettings.Create(2052)); Result := Result + 8/24; //换算成北京时间 end; procedure TForm1.Button1Click(Sender: TObject); var strGMT: string; bjDateTime: TDateTime; bjDateTime2: TDateTime; begin strGMT := GetNetTime(); bjDateTime := GMT2BjDateTime(strGMT); bjDateTime2 := GMT2BjDateTime2(strGMT); Label1.Caption:=strGMT + #10 + DateTimeToStr(bjDateTime); Label2.Caption:=strGMT + #10 + DateTimeToStr(bjDateTime2); end; end.

技术分享

实时获取网络时间 并转换为北京时间的函数

标签:

原文地址:http://www.cnblogs.com/tmdsleep/p/4539813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!