我的程序接收ulong格式的文件时间,我必须将其转换为DateTime格式。这是我写的函数。
public static DateTime fileTimeToDateTime(ulong fileTime)
{
long temp = (long)fileTime;
DateTime dt1 = DateTime.FromFileTime(temp);
return dt1;
}但是对于filetime 2213360000,函数返回1/1/1601 12:00:00 AM,但是正确的值应该是4/22/2009 3:28:29 PM,所以我使用这个webpage将filetime转换为人类可读的时间,它给出了正确的值。所以我的函数看起来有点问题。然后,我使用此代码转换正确的日期。
string windowsTime = "4/22/2009 3:28:29 PM";
DateTime time = DateTime.Parse(windowsTime);
long ft = time.ToFileTime();所以这里输出的ft是128848589090000000,而不是我得到的文件时间(2213360000)。所以看起来我的思考方式有问题。有什么想法吗?
发布于 2014-08-10 12:34:11
FromFileTime期望来自Windows的GetFileTime函数的输出--一个FILETIME结构。它测量自1601年1月1日(UTC)以来的100纳秒间隔的数量。
2213360000个100纳秒的间隔大约是0.02秒。
现在要看的是你的FILETIME是从哪里来的,或者你是否误解了这个方法是为了什么。你能用提供给你的方法的代码更新你的问题吗?
发布于 2014-08-10 13:46:37
你有没有考虑到来自你的链接的转换器坏掉的可能性?如果您将数字减少9个数量级,输入2而不是2213360000,并让它转换,它仍然显示2009年4月22日,只是少了几分钟。
数字似乎不是FILETIME。可能是unix时间戳,从1970年开始。在这种情况下,日期为2040年2月20日上午6:13仅供参考,今天的日期是1407649082。
https://stackoverflow.com/questions/25225522
复制相似问题