gpt4 book ai didi

c++ - 如何在 C++ 中将毫秒时间转换为 FILETIME

转载 作者:行者123 更新时间:2023-11-30 02:23:31 27 4
gpt4 key购买 nike

我有秒数的时间(例如:1505306792)。

如何将其转换为 FILETIME?

这是我试过的代码

    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;

此结果 FILETIME 将于 1648-09-13 15:34:00 到来

我预计这个日期是 2017-09-13 12:46:31 。我在使用在线转换器时也遇到了同样的情况。

知道如何解决这个问题吗?

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

最佳答案

关于加116444736000000000,见How To Convert a UNIX time_t to a Win32 FILETIME or 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;
}

关于c++ - 如何在 C++ 中将毫秒时间转换为 FILETIME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46201834/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com