如何将Milli秒的时间转换为C 中的filtime

How to convert milli seconds time to FILETIME in c++

本文关键字:转换 中的 filtime 时间 Milli      更新时间:2023-10-16

我有时间在secs(ex:1505306792)。

如何将其转换为filtime?

这是我尝试过的代码

    INT64 timer64 = 1505306792;
    timer64 = timer64 *1000 *10000;
    ULONGLONG xx = timer64;
    FILETIME fileTime;
    ULARGE_INTEGER uliTime;
    uliTime.QuadPart = xx;
    fileTime.dwHighDateTime = uliTime.HighPart;
    fileTime.dwLowDateTime = uliTime.LowPart;

此结果filtime即将到来为1648-09-13 15:34:00

我希望这个日期是2017-09-13 12:46:31。使用在线转换器时,我会得到同样的事情。

任何想法如何解决?

我已经使用Boost看到了一些答案,但是它在我的项目中可用。

它是要添加1164444736000000000,请参阅如何将UNIX TIME_T转换为Win32 Filetime或SystemTime:

   #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;
   }