python : hex to date time

标签 python datetime gps hex

23 DD 78 34 = 2013-01-28 21:52:XX //second not sure
92 e3 78 34 = 2013-01-28 22:14:XX 
d4 e3 78 34 = 2013-01-28 22:15:XX 
16 e4 78 34 = 2013-01-28 22:16:XX 

如何将十六进制转换为日期时间?它不是 UNIX 日期

最佳答案

十六进制值看起来像是小端编码,但它并没有接缝使用秒作为刻度值:

>>> values = [
...    (0x3478dd23, datetime(2013, 1, 28, 21, 52)),
...    (0x3478e392, datetime(2013, 1, 28, 22, 14)),
...    (0x3478e3d4, datetime(2013, 1, 28, 22, 15)),
...    (0x3478e416, datetime(2013, 1, 28, 22, 16))
... ]
...
>>> for s, dt in values:
...     print dt - datetime.fromtimestamp(s)
... 
5544 days, 19:02:37
5544 days, 18:57:10
5544 days, 18:57:04
5544 days, 18:56:58

由于偏移量随着时间的推移而缩小,我计算了一个校正因子:

>>> ts_delta = values[1][0] - values[0][0]
>>> ts_delta
1647
>>> dt_delta = values[1][1] - values[0][1]
>>> dt_delta
datetime.timedelta(0, 1320)
>>> dt_delta = dt_delta.days * 60*60*24 + dt_delta.seconds
>>> dt_delta
1320
>>> factor = float(dt_delta) / float(ts_delta)
>>> factor
0.8014571948998178

1647 个刻度 = 1320 秒。

现在,如果我们将这个因素应用于时间戳,偏移量几乎保持不变(秒除外,但由于您不知道它们的值,所以我在源数据中使用了 0)

>>> for s, dt in values:
...     print dt - datetime.fromtimestamp(s * factor)
... 
7567 days, 17:16:08.233151
7567 days, 17:16:08.233151
7567 days, 17:16:15.336976
7567 days, 17:16:22.440802

考虑到这一点,您可以使用此偏移量和因子来转换原始值:

>>> offset = values[0][1] - datetime.fromtimestamp(values[0][0]*factor)
>>> offset
datetime.timedelta(7567, 62168, 233151)

def hex_to_datetime(s):
    return datetime.fromtimestamp(s*factor) + offset

>>> for s, dt in values:
...     print hex_to_datetime(s), dt
... 
2013-01-28 21:52:00 2013-01-28 21:52:00
2013-01-28 22:14:00 2013-01-28 22:14:00
2013-01-28 22:14:52.896175 2013-01-28 22:15:00
2013-01-28 22:15:45.792349 2013-01-28 22:16:00

我觉得这很有前途。

关于 python : hex to date time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14563684/

相关文章:

java - Android 中没有互联网的 GPS 信息

python - 如何提取具有非零列值的行?

python - 如何使用 python pandas 计算给定列的特定行的百分比?

python - 如何在 Seaborn 按 YearMonth 订购 X 轴

android - 如果禁用 GPS,则强制关闭应用程序

android - 从 GPS 提供商明确获取坐标

python - 创建 sublime text 插件同时支持 ST2 和 ST3

python - 带有可变 WHERE 子句的批量更新表

Javascript新日期休息15天

datetime - Pig - 无法将 org.apache.pig.piggybank.evaluation.datetime.convert.ISOToUnix 的匹配函数推断为多个或都不适合