C#Win32中的C#DateTime.ToUniversalTime()

时间:2014-10-29 21:54:21

标签: c# c++ winapi

我正在尝试确定在我的C ++(Win32)应用上使用的正确类型,该应用正在接收返回C#DateTime.ToUniversalTime()值的API调用。

所以我的问题是: 我应该使用U64来存储来自c#函数的返回值。或者使用正确的C ++类型。

  
    

客户端C ++环境正在使用
    使用COM的Win32 + DirectX

  

没有CLR,没有WinRT,没有CLI

1 个答案:

答案 0 :(得分:1)

有问题的API究竟返回了什么? ToUniversalTime方法返回另一个DateTime对象。如果要将其与Win32 API一起使用,则需要将其转换为FILETIME结构,如下所示:

ULARGE_INTEGER uli;
uli.QuadPart = DateTime->ToFileTime();

FILETIME ft;
ft.dwLowDateTime = uli.LowPart;
ft.dwHighDateTime = uli.HighPart;

然后,您可以照常将FILETIME转换为SYSTEMTIME

SYSTEMTIME st;
FileTimeToSystemTime(&ft, &st);

如果API方法返回long long或类似内容,您可以将其复制到上面显示的uli.QuadPart字段中。