博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实时获取网络时间 并转换为北京时间的函数
阅读量:5263 次
发布时间:2019-06-14

本文共 2131 字,大约阅读时间需要 7 分钟。

unit Unit1;interfaceuses  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;//格林威治时间(字符串)转换到北京时间 1function GMT2BjDateTime(const GMT: string): TDateTime;var A: TArray
;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;//格林威治时间(字符串)转换到北京时间 2function GMT2BjDateTime2(const GMT: string): TDateTime;var A: TArray
;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.

转载于:https://www.cnblogs.com/tmdsleep/p/4539813.html

你可能感兴趣的文章
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
理解git对象
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Apache配置反向代理、负载均衡和集群(mod_proxy方式)
查看>>
Linux编程简介——gcc
查看>>
一种高效的序列化方式——MessagePack
查看>>
2019年春季学期第四周作业
查看>>
2019春第十周作业
查看>>
解决ThinkPHP关闭调试模式时报错的问题汇总
查看>>
【APT】SqlServer游标使用
查看>>
关于ExecuteNonQuery()返回值为-1
查看>>
Firefox修復QQ快速登錄
查看>>