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