• 转换GMT秒数为日期时间格式-Delphi源码


    转换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;

  • 相关阅读:
    Yii2 composer报错处理
    bootstrap元素居中
    前端面试题
    control-lable的用法
    jenkins持续集成搭建
    gitlab管理平台搭建
    mysql8.0.11安装
    nexus私服搭建、配置、使用
    mysql5.7.22安装
    nginx配置阿里云免费ssl证书实现https化
  • 原文地址:https://www.cnblogs.com/findumars/p/6512138.html
Copyright © 2020-2023  润新知