在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Delphi日期时间,就是常见的 2014-05-02 10:37:35 -------------------------------------------------------------------- UNIX日期时间,一个整数,从1970/01/01 开始的秒数,int64位 ------------------------------------------------------------------- 标准UTC时间, 世界统一时间,世界标准时间,国际协调时间,简称UTC -------------------------------------------============== 时区,北京是东8区,就是要加 8个小时,8*60*60=28800
注册表有个日期值,1398998255 procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Clear; with TRegistry.Create(KEY_WOW64_64KEY or KEY_ALL_ACCESS) do try RootKey := HKEY_LOCAL_MACHINE; if OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion', False) then begin Memo1.Lines.Add(IntToStr(ReadInteger('InstallDate')));//1398998255 Memo1.Lines.Add(DateTimeToStr(UnixToDateTime(ReadInteger('InstallDate'))));//2014-05-02 2:37:35 Memo1.Lines.Add(DateTimeToStr(UnixToDateTime(ReadInteger('InstallDate') + 28800))); //2014-05-02 10:37:35 Memo1.Lines.Add(DateTimeToStr(JavaToDelphiDateTime(ReadInteger('InstallDate'))));// 1970-01-17 12:36:38 end; finally Free end; end;
Unix时间戳转换成Delphi的TDateTime function UnixDateToDateTime(const USec: Longint): TDateTime; const cUnixStartDate: TDateTime = 25569.0; // 1970/01/01 begin Result := (Usec / 86400) + cUnixStartDate; end;
{ Unix date conversion support } RTL HoursPerDay = 24; MinsPerHour = 60; SecsPerMin = 60; MSecsPerSec = 1000; MinsPerDay = HoursPerDay * MinsPerHour; SecsPerDay = MinsPerDay * SecsPerMin; MSecsPerDay = SecsPerDay * MSecsPerSec; { Days between 1/1/0001 and 12/31/1899 } DateDelta = 693594; { Days between TDateTime basis (12/31/1899) and Unix time_t basis (1/1/1970) } UnixDateDelta = 25569; function DateTimeToUnix(const AValue: TDateTime): Int64; begin Result := Round((AValue - UnixDateDelta) * SecsPerDay); end; function UnixToDateTime(const AValue: Int64): TDateTime; begin Result := AValue / SecsPerDay + UnixDateDelta; end; http://tool.chinaz.com/Tools/unixtime.aspx
http://blog.csdn.net/missmecn/article/details/5870639 uses DateUtils;
可以转换到unix时间,但是注意的是,它得到的时间比c语言中time()得到的时间大了8*60*60
但我进一步研究DateTimeToUnix函数时发现,Delphi中的时间没有经过任何的转换,是直接读取系统时间 我试着改变当前计算机时区,发现Delphi返回值没有任何改变。 而在C++中,改变计算机时区,则time()返回值也随着改变,这就说明C++中标准时间是通过本地时间和当前时区进行计算得来的。
因此,在Delphi开发时,需要注意Delphi获取的时间戳是当前计算机所在时区时间,并非标准UTC时间。 UnixToDateTime()函数并没有对时区进行转换,仅仅是对时间进行了转换。
获取北京时间的接口: 淘宝:http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp
转自: https://www.cnblogs.com/CodeGear/p/4760415.html http://blog.csdn.net/missmecn/article/details/5870639 https://blog.csdn.net/Webben/article/details/104020759 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论