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

    技术2022-05-11  130

    最近在写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,"u-u-u",t1.GetYear(),t1.GetMonth(),t1.GetDay());    //分离出时间    wsprintf(RTime,"u:u:u",t1.GetHour(),t1.GetMinute(),t1.GetSecond());    //把日期和时间显示出来    m_Date=RDate;    m_Time=RTime;    UpdateData(FALSE);}

    最新回复(0)