优雅的方式来调整Python中的日期时区

Chr*_*ris 4 python time timezone date timezone-offset

我的总部设在英国,并且正在努力应对夏令时BST和时区.

这是我的代码:

TIME_OFFSET = 1 # 0 for GMT, 1 for BST

def RFC3339_to_localHHMM(input):
                 # Take an XML date (2013-04-08T22:35:00Z)
                 # return e.g. 08/04 23:35
                 return (datetime.datetime.strptime(input, '%Y-%m-%dT%H:%M:%SZ') +
datetime.timedelta(hours=TIME_OFFSET)).strftime('%d/%m %H:%M')
Run Code Online (Sandbox Code Playgroud)

设置这样的变量感觉非常错误,但我找不到任何优雅的方法来实现上述而没有大量的代码.我错过了什么,是否有办法(例如)读取系统时区?

jfs*_*jfs 5

要将UTC转换为给定时区:

from datetime import datetime
import pytz

local_tz = pytz.timezone("Europe/London") # time zone name from Olson database

def utc_to_local(utc_dt):
    return utc_dt.replace(tzinfo=pytz.utc).astimezone(local_tz)

rfc3339s = "2013-04-08T22:35:00Z"
utc_dt = datetime.strptime(rfc3339s, '%Y-%m-%dT%H:%M:%SZ')
local_dt = utc_to_local(utc_dt)
print(local_dt.strftime('%d/%m %H:%M')) # -> 08/04 23:35
Run Code Online (Sandbox Code Playgroud)

另请参见如何仅使用python标准库将python utc datetime转换为本地日期时间?.