C# DateTime.ToUniversalTime() 在 C++ Win32 中

标签 c# c++ winapi

<分区>

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

所以我的问题是: 我应该使用 U64 来存储从 c# 函数返回的值..还是应该使用什么正确的 C++ 类型。

The client C++ environment is using
Win32 + DirectX utilizing COM

没有 CLR,没有 WinRT,没有 CLI

最佳答案

有问题的 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 字段即可。

关于C# DateTime.ToUniversalTime() 在 C++ Win32 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641325/

相关文章:

c# - 从数据库中获取数据并将其导出到 .csv 文件

c++ - 如何在 C++ 中退出时运行函数

c++ - 什么时候拥有太多动态数组会很危险?

c++ - 如何使用参数选项创建函数?

c++ - 32 位 int 类型的 Win API 互锁操作

c# - 依赖注入(inject) - 处理多次注入(inject)的简洁方法

c# - Application Insights 依赖类型

c# - WPF ListViewItem 项目复选框。如何获取所有选中的项目?

c++ - 非 POD 类型的复制构造函数和普通构造函数

delphi - 如何获取 Win32_DiskPartition 类中的 GettingOffset 属性值