首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datetime to filetime (Python)

Datetime to filetime (Python)
EN

Stack Overflow用户
提问于 2011-06-20 15:32:13
回答 2查看 6.5K关注 0票数 4

有没有链接可以让我用python把datetime转换成filetime?

示例: 13 Apr 2011 07:21:01.0874 (协调世界时) FILETIME=57D8C920:01CBF9AB

上面是一封电子邮件的标题。

EN

回答 2

Stack Overflow用户

发布于 2011-07-01 17:08:09

我在重复问题中的答案被删除了,所以我在这里发帖:

在网上冲浪时,我找到了这个链接:http://cboard.cprogramming.com/windows-programming/85330-hex-time-filetime.html

在那之后,一切都变得简单了:

代码语言:javascript
复制
>>> ft = "57D8C920:01CBF9AB"
... # switch parts
... h2, h1 = [int(h, base=16) for h in ft.split(':')]
... # rebuild
... ft_dec = struct.unpack('>Q', struct.pack('>LL', h1, h2))[0]
... ft_dec
... 129471528618740000L
... # use function from iceaway's comment
... print filetime_to_dt(ft_dec)
2011-04-13 07:21:01

调谐它对你来说是最好的。

票数 1
EN

Stack Overflow用户

发布于 2014-02-17 15:39:57

好吧,这是我最终得到的解决方案

代码语言:javascript
复制
    parm3=0x57D8C920; parm3=0x01CBF9AB

    #Int32x32To64
    ft_dec = struct.unpack('>Q', struct.pack('>LL', parm4, parm3))[0]

    from datetime import datetime
    EPOCH_AS_FILETIME = 116444736000000000;  HUNDREDS_OF_NANOSECONDS = 10000000
    dt = datetime.fromtimestamp((ft_dec - EPOCH_AS_FILETIME) / HUNDREDS_OF_NANOSECONDS)

    print dt

Output will be:
 2011-04-13 09:21:01          (GMT +1)
13 Apr 2011 07:21:01.0874 (UTC)

基于David Buxton 'filetimes.py‘^-请注意,工作时间有所不同

好吧,我改变了两件事:

  1. fromtimestamp()在某种程度上比fromtimestamp()中的*UTC*更适合,因为我在这里处理文件时间,
  2. 的FAT时间分辨率是2秒,所以我不关心可能会崩溃的100 is的剩余时间。(实际上,由于分辨率是2秒,通常除以HUNDREDS_OF_NANOSECONDS时不会有休息时间)

..。而且除了参数传递的顺序外,请注意struct.pack('>LL‘是针对无符号32位整数的!

如果您已经签署了整数的,只需将其更改为struct.pack('>ll‘的签名的32位整数的!

(或单击上面的struct.pack链接了解更多信息)

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

https://stackoverflow.com/questions/6408077

复制
相关文章

相似问题

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