在python中转换64位windows日期时间

在python中转换64位windows日期时间,python,Python,我需要将windows十六进制64位(big-endian)日期时间转换为python中可读的内容 示例“01cb17701e9c885a” 转换为“2010年6月29日星期二09:47:42 UTC” 任何帮助都将不胜感激。该值是“自1601年1月1日午夜12:00:00以来经过的100纳秒间隔数”,因此您正在寻找类似以下内容: import datetime def getFiletime(dt): microseconds = int(dt, 16) / 10 secon

我需要将windows十六进制64位(big-endian)日期时间转换为python中可读的内容

示例“01cb17701e9c885a”

转换为“2010年6月29日星期二09:47:42 UTC”

任何帮助都将不胜感激。

该值是“自1601年1月1日午夜12:00:00以来经过的100纳秒间隔数”,因此您正在寻找类似以下内容:

import datetime

def getFiletime(dt):
    microseconds = int(dt, 16) / 10
    seconds, microseconds = divmod(microseconds, 1000000)
    days, seconds = divmod(seconds, 86400)

    return datetime.datetime(1601, 1, 1) + datetime.timedelta(days, seconds, microseconds)
然后

导致

Tue, 29 June 2010 09:47:42
Python的日期时间格式似乎在1900年之前就被阻塞了;如果您没有实际处理这些日期,您应该会没事。

看起来像Win32值,它:

包含一个64位值,表示自1601年1月1日(UTC)以来的100纳秒间隔数

要转换:

从datetime导入datetime,timedelta
dt='01cb17701e9c885a'
us=int(dt,16)/10
打印(日期时间(1601,1,1)+时间增量(微秒=us))
输出:

2010-06-2909:47:42.754210

您使用什么功能获取该号码?@Mark Ransom:谢谢;我发布了一个临时答案,在1900年之前的几年里,我一直在使用日期格式(我也没有找到好的标准解决方案)。
Tue, 29 June 2010 09:47:42