如何转换为 Win32 FILETIME 或 SYSTEMTIME 的 UNIX time_t

在 UNIX 平台下名为 time_t',表示 1970 年 1 月 1,UTC (协调通用时间) 午夜以来经过的秒数是 ANSI C 运行库算术类型的窗体中维护文件的时间。 
在 Win32 平台下主要中表示的数自 1601 年 1 月 1,UTC 以来的 100 个十亿分之一秒间隔 (坐标通用时间) 一个 64 位 FILETIME 结构的形式维护文件的时间。 
本文说明如何将 UNIX 时间转换为其他 Win32 时间格式。

 

下面的函数将一个 filetime UNIX time_t 格式转换为 Win32 FILETIME 格式。注意 time_t 是一个 32 位的值,FILETIME 是一个 64 位结构,因此,在下面的函数中使用 Win32 功能 Int32x32To64():

   #include <winbase.h>
   #include <winnt.h>
   #include <time.h>

   void UnixTimeToFileTime(time_t t, LPFILETIME pft)
   {
     // Note that LONGLONG is a 64-bit value
     LONGLONG ll;

     ll = Int32x32To64(t, 10000000) + 116444736000000000;
     pft->dwLowDateTime = (DWORD)ll;
     pft->dwHighDateTime = ll >> 32;
   }
				
一旦 UNIX 时间转换为 FILETIME 结构,其他 Win32 时间格式可以轻松地获得使用如 FileTimeToSystemTime() 和 FileTimeToDosDateTime() 的 Win32 函数。
   void UnixTimeToSystemTime(time_t t, LPSYSTEMTIME pst)
   {
     FILETIME ft;

     UnixTimeToFileTime(t, &ft);
     FileTimeToSystemTime(&ft, pst);
   }
				

你可能感兴趣的:(c,unix,360,平台)