将二进制值转换为日期时间 python
Convert binary values to datetime python
我有一个二进制文件,它包含以下值“805783a164fad401”,我需要将它们转换为日期时间
我曾尝试使用 unpack struct 函数来获取双精度值并将浮点数转换为日期时间,但没有成功
def decode(content):
test_file_path = content[16:24]
date_float = unpack('<d', test_file_path)[0]
print date_float
seconds = (date_float - 25569) * 86400.0
print datetime.datetime.utcfromtimestamp(seconds)
我希望在 2019 年 4 月 24 日星期三看到结果 06:12:01 UTC。此结果从将十六进制转换为日期时间的 Dcode 应用程序获得
它不是 floating-point 表示,而是 64 位整数。然后一旦解码,它就不是你的涉及 25569 和 86400 的公式似乎假定的 Excel 时间戳(自 1900 年以来的天数),而是一个 FILETIME(自 1601 年以来的 100 纳秒块):
raw = '\x80\x57\x83\xa1\x64\xfa\xd4\x01' # Python 2
#raw = b'\x80\x57\x83\xa1\x64\xfa\xd4\x01' # Python 3
import struct
unpacked, = struct.unpack('<Q', raw)
import datetime
datetime.datetime(1601,1,1) + datetime.timedelta(microseconds=unpacked/10.)
# Outputs:
# datetime.datetime(2019, 4, 24, 6, 12, 1, 400000)
我有一个二进制文件,它包含以下值“805783a164fad401”,我需要将它们转换为日期时间
我曾尝试使用 unpack struct 函数来获取双精度值并将浮点数转换为日期时间,但没有成功
def decode(content):
test_file_path = content[16:24]
date_float = unpack('<d', test_file_path)[0]
print date_float
seconds = (date_float - 25569) * 86400.0
print datetime.datetime.utcfromtimestamp(seconds)
我希望在 2019 年 4 月 24 日星期三看到结果 06:12:01 UTC。此结果从将十六进制转换为日期时间的 Dcode 应用程序获得
它不是 floating-point 表示,而是 64 位整数。然后一旦解码,它就不是你的涉及 25569 和 86400 的公式似乎假定的 Excel 时间戳(自 1900 年以来的天数),而是一个 FILETIME(自 1601 年以来的 100 纳秒块):
raw = '\x80\x57\x83\xa1\x64\xfa\xd4\x01' # Python 2
#raw = b'\x80\x57\x83\xa1\x64\xfa\xd4\x01' # Python 3
import struct
unpacked, = struct.unpack('<Q', raw)
import datetime
datetime.datetime(1601,1,1) + datetime.timedelta(microseconds=unpacked/10.)
# Outputs:
# datetime.datetime(2019, 4, 24, 6, 12, 1, 400000)