如何将以毫秒为单位的时间转换为DateTime?

时间:2014-05-21 13:55:40

标签: c# winapi

关于这个主题有很多想法,但这个是关于Win32 / WinEventProc的dwmsEventTime。

MSDN http://msdn.microsoft.com/en-us/library/windows/desktop/dd373885(v=vs.85).aspx声明它是以毫秒为单位的事件时间,但没有提供进一步的解释。几毫秒从哪里来?

以下是该事件返回的示例值:

dwmsEventTime: 1209382650 
DateTime.Now:  05/21/2014 16:49:37  (this should be very close to dwmsEventTime)

有谁知道如何将此参数转换为.NET DateTime()?

1 个答案:

答案 0 :(得分:2)

您可以尝试以下方式:

static DateTime GetDateTimeFromMillisecondNumber(int millisecCount)
{
  return DateTime.Now.AddMilliseconds(millisecCount - Environment.TickCount);
}

但请注意,如果系统是从获得millisecCount后重启的,则会返回垃圾。如果它在与您获得计数的机器不同的机器上运行,则相同。

此外,这只是正确的"模49.7天",即正确的日期和时间可能是49.7天的整数倍,大于或小于我的方法返回的值。