2024-04-26 13:39:18 发布
网友
我需要将windows十六进制64位(big endian)日期时间转换成python中可读的内容?
示例“01cb17701e9c885a”
转换为“2010年6月29日星期二09:47:42 UTC”
任何帮助都将不胜感激。
看起来像一个Win32FILETIME值,它:
Contains a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC).
要转换:
from datetime import datetime,timedelta dt = '01cb17701e9c885a' us = int(dt,16) / 10. print datetime(1601,1,1) + timedelta(microseconds=us)
2010-06-29 09:47:42.754212
该值是“自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)
那么
print format(getFiletime('01cb17701e9c885a'), '%a, %d %B %Y %H:%M:%S %Z')
结果
Tue, 29 June 2010 09:47:42
Python的datetime格式似乎与1900年之前的年份有些冲突;如果您实际上没有处理这些日期,那么应该没问题。
看起来像一个Win32FILETIME值,它:
要转换:
输出
该值是“自1601年1月1日午夜12:00:00起经过的100纳秒间隔数”,因此您需要查找如下内容:
那么
结果
Python的datetime格式似乎与1900年之前的年份有些冲突;如果您实际上没有处理这些日期,那么应该没问题。
相关问题 更多 >
编程相关推荐