我有几个本地时间点:
import datetime
from zoneinfo import ZoneInfo as zi
wmr = datetime.time(hour=12, tzinfo=zi("GMT"))
ecb = datetime.time(hour=14, minute=15, tzinfo=zi("CET"))
jpx = datetime.time(hour=14, tzinfo=zi("Japan"))
我想根据日期将其转换为 UTC 时间。
例如,
local2utc(datetime.datetime(2024,1,1), wmr) ---> "2024-01-01 12:00:00"
local2utc(datetime.datetime(2024,6,1), wmr) ---> "2024-06-01 11:00:00" (DST active)
local2utc(datetime.datetime(2024,1,1), ecb) ---> "2024-01-01 13:15:00"
local2utc(datetime.datetime(2024,6,1), ecb) ---> "2024-06-01 12:15:00" (DST active)
local2utc(datetime.datetime(2024,1,1), jpx) ---> "2024-01-01 05:00:00"
local2utc(datetime.datetime(2024,6,1), jpx) ---> "2024-06-01 05:00:00" (no DST in Japan)
以下实现
def local2utc(date, time):
local_dt = datetime.datetime.combine(date,time)
tm = local_dt.utctimetuple()
return datetime.datetime(*tm[:7])
似乎适用于日本和CET,但不适用于GMT / WET (因为伦敦夏季采用BST / WEST )。
那么我该怎么办?
我可能会对这个问题感到困惑,但是您尝试过以下方法吗?
Python 使用 IANA 时区数据库。时区名称列表可在此处找到。根据此表,“GMT”是与 UTC 偏移量为 0 且不遵守夏令时的时区。
也许“欧洲/伦敦”会给你你想要的结果。