Python 2.7 将gmtime()转换为4字节十六进制

Python 2.7 将gmtime()转换为4字节十六进制,python-2.7,datetime,hex,Python 2.7,Datetime,Hex,我有以下格式的时间: Fri, 19 Dec 2014 03:55:24 我想把它转换成一个4字节的十六进制值。我的问题与此类似:,但区别在于我有不同的格式,我使用gmtime()函数,因为我想要从纪元开始的日期。这就是我到目前为止所尝试的(通过尝试将类似问题的答案中的代码分解成更小的部分): 但我得到了一个错误: ValueError: uncoverted data remains: 你能帮帮我吗? 我知道这是一个简单的问题,但我看不出问题出在哪里。删除中使用的格式字符串中的尾随空格 u

我有以下格式的时间:

Fri, 19 Dec 2014 03:55:24
我想把它转换成一个4字节的十六进制值。我的问题与此类似:,但区别在于我有不同的格式,我使用
gmtime()
函数,因为我想要从纪元开始的日期。这就是我到目前为止所尝试的(通过尝试将类似问题的答案中的代码分解成更小的部分):

但我得到了一个错误:

ValueError: uncoverted data remains:
你能帮帮我吗?
我知道这是一个简单的问题,但我看不出问题出在哪里。

删除中使用的格式字符串中的尾随空格

ut = time.strftime("%a, %d %b %Y %H:%M:%S ", time.gmtime())
该行应为:

ut = time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime())

如果%S之后没有空格,它将在我这边运行

有几个步骤:

  • 转换为表示故障时间的对象

    import email.utils
    time_tuple = email.utils.parsedate("Fri, 19 Dec 2014 03:55:24")
    
  • 将故障时间转换为“自历元起的秒数”

  • 以十六进制格式打印数字

    print('%08X' % timestamp)
    # -> 5493A1AC
    
  • gmtime()
    返回UTC时间。给定UTC时间,您可以得到“从历元算起的秒数”,但它们是不同的东西。您确定输入的时间字符串(例如,“Fri,2014年12月19日03:55:24”)是UTC(而不是您的本地时区)吗?
    import calendar
    timestamp = calendar.timegm(time_tuple) # assume input time is in UTC
    
    print('%08X' % timestamp)
    # -> 5493A1AC