我的程序以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();
所以这里输出ft
是128848589090000000
而不是我得到的文件时间(2213360000
)。所以我认为看起来有些不对劲。有什么想法吗?
答案 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.