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

时间:2014-12-19 04:05:07

标签: python-2.7 datetime hex

我有时间采用这种格式:

Fri, 19 Dec 2014 03:55:24

我希望将其转换为4字节的十六进制值。我的问题类似于这个:question,但区别在于我有不同的格式,我使用gmtime()函数,因为我想要自Epoch以来的日期。这是我到目前为止所尝试的(通过尝试将类似问题的答案中的代码分解为更小的部分):

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

但我收到错误:

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

2 个答案:

答案 0 :(得分:0)

删除

中使用的格式字符串中的尾随空格
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之后的空格,它会在我身边运行!

答案 1 :(得分:0)

有几个步骤:

  1. Parse rfc 5322 time string进入代表故障时间的对象

    import email.utils
    time_tuple = email.utils.parsedate("Fri, 19 Dec 2014 03:55:24")
    
  2. 将故障时间转换为自Epoch"以来的#34;秒编号

    import calendar
    timestamp = calendar.timegm(time_tuple) # assume input time is in UTC
    
  3. 以十六进制格式打印数字

    print('%08X' % timestamp)
    # -> 5493A1AC