转换GMT秒数为日期时间格式-VC++源码。

最近在写PE分析工具的时候,需要转换TimeDateStamp字段值为日期时间格式,这是VC++的源码。  
// 把GMT时间的秒数转换成日期时间格式
CTime GetGMTDateTime( long  Value)
{
    
//GMT时间从1970年1月1日开始,先把它作为赋为初值
    int Year=1970, Month=1, Day=1;
    
int Hour=0, Min=0, Sec=0, MSec=0;
    
//临时变量
    int iYear=0, iDay=0;
    
int iHour=0, iMin=0, iSec=0;
    
//计算文件创建的年份
    iYear=Value / (365*24*60*60);
    Year
=Year+iYear;
    
//计算文件除创建整年份以外还有多少天
    iDay=(Value % (365*24*60*60)) / (24*60*60);
    
//把闰年的年份数计算出来
    int RInt=0;
    
for(int i=1970;i<Year;i++)
    
{
        
if((i % 4)==0)
            RInt
=RInt+1;
    }

    
//计算文件创建的时间(几时)
    iHour=((Value % (365*24*60*60)) % (24*60*60)) / (60*60);
    Hour
=Hour+iHour;
    
//计算文件创建的时间(几分)
    iMin=(((Value % (365*24*60*60)) % (24*60*60)) % (60*60)) / 60;
    Min
=Min+iMin;
    
//计算文件创建的时间(几秒)
    iSec=(((Value % (365*24*60*60)) % (24*60*60)) % (60*60)) % 60;
    Sec
=Sec+iSec;

    CTime t(Year,Month,Day,Hour,Min,Sec);
    CTime t1;
    t1
=t+(iDay-RInt)*24*60*60;
    
return t1;
}


// 调用
void  CGMTProDlg::OnOK() 
{
    CTime t1;
    
//708992537为秒数
    t1=GetGMTDateTime(708992537);
    
char RDate[20]={0};
    
char RTime[20]={0};
    
//分离出日期
    wsprintf(RDate,"%04u-%02u-%02u",t1.GetYear(),t1.GetMonth(),t1.GetDay());
    
//分离出时间
    wsprintf(RTime,"%02u:%02u:%02u",t1.GetHour(),t1.GetMinute(),t1.GetSecond());
    
//把日期和时间显示出来
    m_Date=RDate;
    m_Time
=RTime;
    UpdateData(FALSE);
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值