C#中的FILETIME实现

时间:2015-10-30 06:43:50

标签: c# c++ time

我正在尝试将一些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#的问题吗?我需要使用哪些方法?如上所述,FileTimeLocalFileTime之间的区别是什么?

1 个答案:

答案 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}}。