首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ulong FILETIME转换为datetime

将ulong FILETIME转换为datetime
EN

Stack Overflow用户
提问于 2014-08-10 12:24:30
回答 2查看 1.7K关注 0票数 1

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

代码语言:javascript
复制
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转换为人类可读的时间,它给出了正确的值。所以我的函数看起来有点问题。然后,我使用此代码转换正确的日期。

代码语言:javascript
复制
string windowsTime = "4/22/2009 3:28:29 PM";
DateTime time = DateTime.Parse(windowsTime);
long ft = time.ToFileTime();

所以这里输出的ft128848589090000000,而不是我得到的文件时间(2213360000)。所以看起来我的思考方式有问题。有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2014-08-10 12:34:11

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

2213360000个100纳秒的间隔大约是0.02秒。

现在要看的是你的FILETIME是从哪里来的,或者你是否误解了这个方法是为了什么。你能用提供给你的方法的代码更新你的问题吗?

票数 2
EN

Stack Overflow用户

发布于 2014-08-10 13:46:37

你有没有考虑到来自你的链接的转换器坏掉的可能性?如果您将数字减少9个数量级,输入2而不是2213360000,并让它转换,它仍然显示2009年4月22日,只是少了几分钟。

数字似乎不是FILETIME。可能是unix时间戳,从1970年开始。在这种情况下,日期为2040年2月20日上午6:13仅供参考,今天的日期是1407649082。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25225522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档