C# 将ulong FILETIME转换为datetime
我的程序以C# 将ulong FILETIME转换为datetime,c#,datetime,filetime,C#,Datetime,Filetime,我的程序以ulong格式接收文件时间,我必须将其转换为DateTime格式。这是我写的函数 public static DateTime fileTimeToDateTime(ulong fileTime) { long temp = (long)fileTime; DateTime dt1 = DateTime.FromFileTime(temp); return dt1; } 但是对于filetime2213360000,函数返回1/1/1601 12:00:00
ulong
格式接收文件时间,我必须将其转换为DateTime
格式。这是我写的函数
public static DateTime fileTimeToDateTime(ulong fileTime)
{
long temp = (long)fileTime;
DateTime dt1 = DateTime.FromFileTime(temp);
return dt1;
}
但是对于filetime2213360000
,函数返回1/1/1601 12:00:00 AM
,但是正确的应该是4/22/2009 3:28:29 PM
,因此我使用它将filetime转换为人类可读的时间,并给出正确的值。看来我的函数有问题。然后我使用这段代码转换正确的日期
string windowsTime = "4/22/2009 3:28:29 PM";
DateTime time = DateTime.Parse(windowsTime);
long ft = time.ToFileTime();
所以这里的输出
ft
是128848589090000000
,而不是我得到的文件时间(2213360000
)。看来我的想法有问题。有什么想法吗?FromFileTime
需要Windows的GetFileTime
函数的输出——一个FILETIME
结构。它测量自1601年1月1日(UTC)以来的100纳秒间隔数
2213360000 100纳秒的间隔约为0.02秒
现在要看的是你的
FILETIME
是从哪里来的,或者你是否误解了这个方法的用途。你能用代码给你的方法更新你的问题吗? < P>你是否考虑到从你的链接中的转换器被破坏的可能性?如果你将这个数字减少九个数量级,输入2而不是2213360000,然后让它转换,它仍然显示2009年4月22日,只少几分钟
数字似乎不是FILETIME。它可能是unix stamp,自1970年以来的秒数。在这种情况下,日期将是2040年2月20日上午6:13。这些单位的FYI今天的日期是1407649082 此文件时间是从另一家公司提供的DLL中获取的。但是你看到的网页给了我正确的日期和时间。所以,应该有一种方法来获取它。你需要看看那个网站是以什么格式阅读它的。这绝对不是2009年的
FILETIME
。只是一个猜测,但它的精确度可能不如完整的文件时间。乘以10的某个幂可能会得到“正确”的结果。不过,如果您能够从源代码中验证您收到的值的确切含义,那将是最好的。