【问题标题】:Different between two values in pythonpython中两个值之间的差异
【发布时间】:2021-08-21 02:36:24
【问题描述】:

我有两个值,这个值是十六进制-二进制值。我需要转换为时间戳并获得两个值之间的差异。我尝试了很多方法,但没有成功。你能帮帮我吗?

value1 = b'\x05\x03'value2 = b'c\xf3'

我试过这样:

import struct

data= type(b'\xb5B')
index1= 773
index2= 62307

date1 = bin(773)
date2= bytes(date1, 'ascii')

print(datetime.datetime.fromtimestamp(int(index1)).strftime('%Y-%m-%d %H:%M:%S'))
print(datetime.datetime.fromtimestamp(int(index2)).strftime('%Y-%m-%d %H:%M:%S'))

date1 = datetime.datetime.fromtimestamp(index1).strftime('%d-%m-%y -%h')
date2= datetime.datetime.fromtimestamp(index2)

unpacked, = struct.unpack('<Q', date2)
test= datetime.datetime(1601,1,1) + datetime.timedelta(microseconds=unpacked/10.)

print(test)
print(date2)

【问题讨论】:

  • 欢迎来到 Stack Overflow。对于index1index2的指定值,结果应该是什么?按照什么逻辑?我对您显示的代码感到困惑,因为我不知道它是代表解决问题的一次尝试还是多次尝试,还因为我不明白 index1index2 是否分别代表一个单独的日期,或者它们在组合时是否代表一个日期,或者只是什么。我们只能帮助您解决实际解释的问题。请阅读How to Ask

标签: python difference


【解决方案1】:
  1. 我将byte 转换为integer
  2. integer数字为second‍‍‍‍‍‍
  3. 计算这两个second的不同
  4. second转换为datetime格式
  5. 对于函数int.from_bytes(bytes, byteorder, *, signed=False),请阅读此doc 或此Q&A。(我使用byteorder='big',也许您需要byteorder='little'。)

试试这个:

from datetime import datetime

value1 = b'\x05\x03' 
value2 = b'c\xf3'

int_val1 = int.from_bytes(value1 , "big")
int_val2 = int.from_bytes(value2 , "big")

datetime.fromtimestamp(int_val2 - int_val1).strftime("%A, %B %d, %Y %I:%M:%S")

输出:

'Thursday, January 01, 1970 10:15:04'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 2014-10-23
    相关资源
    最近更新 更多