将ulong FILETIME转换为datetime

时间:2014-08-10 04:24:30

标签: c# datetime filetime

我的程序以ulong格式接收文件时间,我必须将其转换为DateTime格式。所以这是我写的函数。

public static DateTime fileTimeToDateTime(ulong fileTime)
{
    long temp = (long)fileTime;
    DateTime dt1 = DateTime.FromFileTime(temp);
    return dt1;
}

但是对于文件时间2213360000,函数返回1/1/1601 12:00:00 AM但正确的应该是4/22/2009 3:28:29 PM那么我使用这个webpage将文件时间转换为人类可读时间并且它给出了我正确的价值。所以我的功能看起来有些不对劲。然后我使用此代码和平转换正确的日期。

string windowsTime = "4/22/2009 3:28:29 PM";
DateTime time = DateTime.Parse(windowsTime);
long ft = time.ToFileTime();

所以这里输出ft128848589090000000而不是我得到的文件时间(2213360000)。所以我认为看起来有些不对劲。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

FromFileTime期待Windows'的输出GetFileTime函数 - FILETIME结构。它测量自1601年1月1日(UTC)以来100纳秒间隔的数量。

2213360000 100纳秒间隔约为0.02秒。

现在要看的是您从FILETIME获取{{1}}的地方,或者您是否误解了该方法的用途。你能用提供方法的代码更新你的问题吗?

答案 1 :(得分:1)

您是否考虑过链接转换器损坏的可能性?如果你将数量减少九个数量级,输入2而不是2213360000并让它转换,它仍然显示2009年4月22日,只需几分钟。

这个数字似乎不是FILETIME。它可能是unix邮票,自1970年以来的秒数。在这种情况下,日期将是2040年2月20日,上午6:13。这些单位的FYI今天的日期是1407649082.

相关问题