Python 3.4 使用或不使用 '%z' 给出相同的纪元时间?

Python 3.4 giving same epoch time with or without '%z'?

我的代码在 python 3 上运行,给出纪元时间 - 然而,无论 z 的值如何,它都给出相同的时间 1389458028 - 下面是我的代码:

import time

def epoch_time():    
    d = '11/Jan/2014:08:33:48 -0500'
    p='%d/%b/%Y:%H:%M:%S %z'
    aa = int(time.mktime(time.strptime(d , p)))
    return aa   

print (epoch_time())

应该如何解决?

time.strptime() 解析时区,但 time.mktime() 不使用 struct_time 对象中的 tm_gmtoff 字段。正如文档所说,它与 localtime() 相反,不关心时区。

您可以使用 datetime 模块

import datetime

def epoch_time(d):
    p = '%d/%b/%Y:%H:%M:%S %z'
    a = datetime.datetime.strptime(d, p)
    aa = a.timestamp()
    return aa

或使用 time.strptime() 结果的 tm_gmtoff 字段和您当地的时区来计算您获得的时间戳与实际 UTC 时间戳之间的偏移量。