这是原来的代码。
procedure   TForm1.Button1Click(Sender:   TObject); 
var 
    T:Int64; 
    D:TDateTime; 
begin 
    T:=1167627540218; 
//     T:=1167640359140; 
    D:=UnixToDateTime(T   div   1000); 
    D:=D+8/24;   //时间戳是格林威治时间,转换到中国+8区 
    ShowMessage(DateTimeToStr(D)); 
end; 我朋友翻译成C的了
string UnixToDateTime(INT64 iMinSecond)
{
int iSecond = iMinSecond/1000;
int iYear   = iSecond/(365*24*3600);
iSecond -=iYear*(365*24*3600);
int iMonth  = iSecond/(30*24*3600);
iSecond -=iMonth*(30*24*3600);
int iDay    = iSecond/(24*3600);
iSecond -=iDay*(24*3600);
int iHour   = iSecond/3600;
iSecond -=iHour*(3600);
int iMin = iSecond/60;
iSecond -=iMin*(60); char sDay[64] ={0};
sprintf(sDay,"%04d/%02d/%02d %02d:%02d:%02d",iYear+1970,iMonth+1,iDay+1,iHour,iMin,iSecond);
return sDay;
} 但是最后的结果不一样哦。
有没有兄弟可以帮忙检查下。

解决方案 »

  1.   

    其实就是翻译这个函数UnixToDateTime
    UnixToDateTime 函数;*转换Unix或Linux日期、时间值为Delphi日期时间值   1970/1/1為起點
      

  2.   

    UnixToDateTime(), 看描述就是将从1970/1/1经过的ms数转换为日期值?
      

  3.   

    具体格式不清楚,参考http://msdn.microsoft.com/en-us/library/1f4c8f33.aspx
      

  4.   

    其实就是翻译这个函数UnixToDateTime 
    UnixToDateTime 函数;*转换Unix或Linux日期、时间值为Delphi日期时间值  1970/1/1為起點我知道VC里面有个函数差不多。
    可是我就是想学习下。 看高手门翻译的代码。。 要纯C的
      

  5.   

    1,把区时年月日都转换成UTC秒数。
    2,然后计算各个区时秒数差值(时区数*3600)。
    3,再把秒数转换成年月日。
    代码不在手头,不然就贴给你。