【问题标题】:Getting a datetime in this format and converting to 4 byte hex以这种格式获取日期时间并转换为 4 字节十六进制
【发布时间】:2012-06-03 04:23:27
【问题描述】:

我有一个这种格式的日期时间。

1999-12-31 09:00:00

来自十六进制值:

F0C46C38

如何将上述格式的日期时间值变成一个 4 字节的十六进制? 我在上面发布的值是相互补充的。第二个代码块中的十六进制取反了。

谢谢!

【问题讨论】:

    标签: python datetime hex


    【解决方案1】:

    386CC4F0(十六进制)== 946652400(十进制)
    946652400 是 1999-12-31 15:00:00 GMT 的 Unix 时间戳。

    import time
    print hex(int(time.mktime(time.strptime('1999-12-31 15:00:00', '%Y-%m-%d %H:%M:%S'))) - time.timezone)
    

    【讨论】:

    • time.timezone 不应在此处使用。如果输入时间为 UTC,则应使用 calendar.timegm() 而不是 time.mktime()
    【解决方案2】:
    #!/usr/bin/env python3
    import binascii
    import struct
    from datetime import datetime
    
    # convert time string into datetime object
    dt = datetime.strptime('1999-12-31 09:00:00', '%Y-%m-%d %H:%M:%S')
    
    # get seconds since Epoch
    timestamp = dt.timestamp() # assume dt is a local time
    
    # print the timestamp as 4 byte hex (little-endian order)
    print(binascii.hexlify(struct.pack('<I', round(timestamp))))
    # -> b'f0c46c38'
    

    【讨论】:

      猜你喜欢
      • 2021-07-11
      • 2012-09-29
      • 2022-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 2019-09-07
      • 1970-01-01
      相关资源
      最近更新 更多