C++ Win32 中的 C# DateTime.ToUniversalTime() [关闭]
Posted
技术标签:
【中文标题】C++ Win32 中的 C# DateTime.ToUniversalTime() [关闭]【英文标题】:C# DateTime.ToUniversalTime() in C++ Win32 [closed] 【发布时间】:2014-10-29 21:54:20 【问题描述】:我正在尝试确定要在我的 C++ (Win32) 应用上使用的正确类型,该应用正在接收返回 C# DateTime.ToUniversalTime()
值的 API 调用的返回。
所以我的问题是: 我应该使用 U64 来存储 c# 函数的返回值吗?还是使用正确的 C++ 类型。
客户端 C++ 环境正在使用 Win32 + DirectX 利用 COM
没有 CLR、没有 WinRT、没有 CLI
【问题讨论】:
自定义 CLR 主机?通讯? C++/CLI?温特?与托管代码互操作的方法不止一种,您必须明确。发布一个sn-p。 Win32. DirectX 利用 COM - 没有 CLR,没有 WinRT !! 【参考方案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
字段中。
【讨论】:
FileTime 不是 DateTime。我需要返回一个 DateTime ....我的客户不仅仅是 C++ 应用程序。我错过了什么?? @SDDeveloper 如果 API 返回一个 .NET DateTime 对象,那么您别无选择,只能使用该对象。这个答案只是为您提供了在拥有它后如何处理它的选项。 @SDDeveloper:您的问题暗示您在 Win32 应用程序中获取了 DateTime 对象并想知道如何处理它。如果这不是您要问的问题,则需要提供更多详细信息。 Cloud api 返回一个 DateTime ..yes 但 C++ 没有 datetime 类型,所以我需要找出在 C++ 端使用什么类型才能获得 datetime。 Cloud API 也被 ios、Java、DotNet 应用程序使用......所以如果可以的话,我宁愿坚持使用 DateTime...... @JonathanPotter ULARGE_INTEGER 也是我应该在 C++ 客户端上使用的类型,以便存储然后操作 API 返回的 DateTime 值??以上是关于C++ Win32 中的 C# DateTime.ToUniversalTime() [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 C++(win32 应用程序)中使用 C# 类时出现 EEFileLoadException
GDI+ DrawImage 在 C++ (Win32) 中比在 C# (WinForms) 中慢得多