Python中带时间模块的数字时区处理

Python中带时间模块的数字时区处理,python,time,Python,Time,我有以下Python代码: import json import fileinput import time ts_pattern = '[%d/%b/%Y:%H:%M:%S +0000]' for line in fileinput.input(): json_data = json.loads(line) etime = int(time.mktime(time.strptime(json_data['time_local'], ts_pattern))) pr

我有以下Python代码:

import json
import fileinput
import time

ts_pattern  = '[%d/%b/%Y:%H:%M:%S +0000]'

for line in fileinput.input():
    json_data = json.loads(line)
    etime = int(time.mktime(time.strptime(json_data['time_local'], ts_pattern)))
    print etime
看来我犯了个错误。例如,在我正在阅读的JSON中,
time\u local
[06/Oct/2015:15:29:35+0000]
。我的脚本输出1444166975作为结果。然而,据我所知,这是不正确的:

$ date -ud @1444166975
Tue Oct  6 21:29:35 UTC 2015
使用linux
date
命令执行转换返回:

$ date +%s -ud "06-Oct-2015 15:29:35 +0000"
1444145375

据我所知(这可能很容易出错…),我希望输出以GMT为单位,以便转换为正确的历元。我遗漏了什么?

不要在UTC时间中使用
time.mktime()
。它接受本地时间,因此,如果您的本地时区不是UTC,则您的代码是错误的

改用:

请看

我总是喜欢“我该怎么做…”、“你不该怎么做”的帖子,因为它们似乎揭示了一门语言的新事物。成功了。非常感谢你。
#!/usr/bin/env python
import time
from calendar import timegm

tt = time.strptime('[06/Oct/2015:15:29:35 +0000]',
                   '[%d/%b/%Y:%H:%M:%S +0000]')
print(timegm(tt))  # -> 1444145375