我正在尝试将一些C ++项目转换为C#。我现在正在努力学习C ++遇到的时间课程。它有如下方法:
const RsDateTime& RsDateTime::GetTime()
{
FILETIME ft;
::GetSystemTimeAsFileTime(&ft);
::FileTimeToLocalFileTime(&ft, &m_Time); // Why call to local time? What does it do?
return *this;
}
FILETIME RsDateTime::GetUTCTimeAsFile() const
{
FILETIME ft;
::LocalFileTimeToFileTime(&m_Time, &ft); // Why call to local time?
return ft;
}
static unsigned __int64 GetAsUINT64(const FILETIME* ft)
{
ULARGE_INTEGER li;
li.LowPart = ft->dwLowDateTime;
li.HighPart = ft->dwHighDateTime;
return li.QuadPart;
}
有人可以帮我解决如何将此转换为C#的问题吗?我需要使用哪些方法?如上所述,FileTime
和LocalFileTime
之间的区别是什么?
答案 0 :(得分:0)
在Win32(此代码似乎是)中,FILETIME
是:
一个64位值,表示自1601年1月1日(UTC)以来100纳秒间隔的数量。
除非您依赖于1601时代,否则在C#/ .NET中只使用DateTime
类型,其中包含:
此属性的值表示自0001年1月1日午夜12:00:00起经过的100纳秒间隔的数量。
我的建议是完全抛弃/忽略C ++代码,除非你知道它返回的数据正在某个地方使用,具体取决于Win32 FILETIME
,如果没有,删除代码并使用{{ 1}}。