任何链接让我使用 python 将日期时间转换为文件时间?
示例:2011 年 4 月 13 日 07:21:01.0874 (UTC) FILETIME=[57D8C920:01CBF9AB]
从电子邮件标题中获得上述内容。
那么这是我最终得到的解决方案
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' ^-请注意,小时数有所不同
好吧,我改变了两件事:
...除了参数传递的顺序之外,请注意struct.pack ('> LL ' 是用于无符号32 位 Int 的!
如果您已签署 int,只需将其更改为 struct.pack('> ll ' 以获取已签署的 32 位 Int!
(或单击上面的struct.pack链接了解更多信息)
我在重复问题中的答案被删除了,所以我会在这里发布:
冲浪我找到了这个链接:http ://cboard.cprogramming.com/windows-programming/85330-hex-time-filetime.html
之后,一切都变得简单:
>>> 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
调整它由你决定。