在数据库导出文件中,我有一列包含以二进制格式存储的日期。我正在尝试解压缩文件中的日期,以便“\x07\xdb\x0c\x01”再次变为“01-12-2011”。
我知道十六进制值如何与十进制对应,
0x07DB = 2011
0x0C = 12
0x01 = 01
但是如何正确解压这些格式化的日期呢?
在数据库导出文件中,我有一列包含以二进制格式存储的日期。我正在尝试解压缩文件中的日期,以便“\x07\xdb\x0c\x01”再次变为“01-12-2011”。
我知道十六进制值如何与十进制对应,
0x07DB = 2011
0x0C = 12
0x01 = 01
但是如何正确解压这些格式化的日期呢?
使用该struct
模块将这些值解包为整数元组:
import struct
year, month, day = struct.unpack('>HBB', "\x07\xdb\x0c\x01")
>HBB
格式说明符告诉struct
期望 3 个小端格式的值,一个无符号短(2 字节值,读取为整数)和无符号字符(1 字节值,读取为整数)。
然后,您可以根据需要将这些传递datetime.date()
给创建日期对象:
from datetime import date
import struct
somedate = date(*struct.unpack('>HBB', "\x07\xdb\x0c\x01"))
演示:
>>> import struct
>>> from datetime import date
>>> date(*struct.unpack('>HBB', "\x07\xdb\x0c\x01"))
datetime.date(2011, 12, 1)
或者您可以使用字符串格式:
>>> '{2:02d}-{1:02d}-{0}'.format(*struct.unpack('>HBB', "\x07\xdb\x0c\x01"))
'01-12-2011'
创建一个表示该日期的字符串。