转换GMT秒数为日期时间格式-Delphi源码。收藏 最近在写PE分析工具的时候,需要转换TimeDateStamp字段值为日期时间格式,这是Delphi的源码。
//把GMT时间的秒数转换成日期时间格式 function GetGMTDateTime(Value:Int64):TDateTime; var Year,Month,Day:Word; Hour,Min,Sec,MSec:Word; iYear,iDay:Word; iHour,iMin,iSec:Word; RInt,i:Integer; TempDate,TempTime:TDateTime; begin //GMT是从1970年1月1日开始计算的,所以把它作为初值 Year:=1970; Month:=1; Day:=1; Hour:=0; Min:=0; Sec:=0; MSec:=0; //计算文件创建的年份 iYear:=Value div (365*24*60*60); Year:=Year+iYear; //计算文件除创建整年份以外还有多少天 iDay:=(Value mod (365*24*60*60)) div (24*60*60); //把闰年的年份数计算出来 RInt:=0; for i:=1970 to Year-1 do begin if (i mod 4)=0 then RInt:=RInt+1; end;
//计算文件创建的时间(几时) iHour:=((Value mod (365*24*60*60)) mod (24*60*60)) div (60*60); Hour:=Hour+iHour; //计算文件创建的时间(几分) iMin:=(((Value mod (365*24*60*60)) mod (24*60*60)) mod (60*60)) div 60; Min:=Min+iMin; //计算文件创建的时间(几秒) iSec:=(((Value mod (365*24*60*60)) mod (24*60*60)) mod (60*60)) mod 60; Sec:=Sec+iSec; //合并日期和时间 TempDate:=EncodeDate(Year,Month,Day); TempTime:=EncodeTime(Hour,Min,Sec,MSec); //由于闰年的二月份有29天,闰年年份一年有366年天,而平年一年有365天,上面 //是用365计算的,所以要减去闰年年份多出来的一天 //最后返回值合并日期和时间到TDateTime类型中 Result:=(TempDate+iDay-RInt)+TempTime; end;
procedure TForm1.Button1Click(Sender: TObject); var Temp:TDateTime; begin //708992537为秒数 Temp:=GetGMTDateTime(708992537); //取出日期 Edit1.Text:=DateToStr(Temp); //取出时间 Edit2.Text:=TimeToStr(Temp); end;
|
请发表评论