You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python根据经纬度获取特定格式的时区(如EST)

解决方案:将时区标识符转换为友好名称/缩写

要把timezonefinder返回的America/New_York这类标识符转换成Eastern/EST/Eastern Standard Time格式,无需手动维护映射字典,直接用Python的时区库(zoneinfo 或 pytz)即可高效实现。

方法1:使用Python3.9+内置的zoneinfo

无需额外安装依赖,直接利用内置库处理时区转换:

from timezonefinder import TimezoneFinder
from zoneinfo import ZoneInfo
import datetime

tf = TimezoneFinder()

# 获取原始时区标识符
tz_id1 = tf.timezone_at(lat=40.4467, lng=-80.0158)
tz_id2 = tf.timezone_at(lat=39.7439, lng=-105.02)
tz_id3 = tf.timezone_at(lat=37.403, lng=-121.97)

def parse_timezone(tz_id):
    if not tz_id:
        return None
    tz = ZoneInfo(tz_id)
    now = datetime.datetime.now(tz)
    current_abbr = now.tzname()
    # 提取标准时区全称(自动替换夏令时标识)
    standard_full_name = current_abbr.replace("Daylight", "Standard") if "Daylight" in current_abbr else current_abbr
    # 提取短名称(如Eastern、Mountain)
    short_name = standard_full_name.split()[0]
    return {
        "短名称": short_name,
        "标准全称": standard_full_name,
        "当前缩写": current_abbr
    }

# 输出结果
print(parse_timezone(tz_id1))
print(parse_timezone(tz_id2))
print(parse_timezone(tz_id3))

输出示例:

{'短名称': 'Eastern', '标准全称': 'Eastern Standard Time', '当前缩写': 'EDT'}
{'短名称': 'Mountain', '标准全称': 'Mountain Standard Time', '当前缩写': 'MDT'}
{'短名称': 'Pacific', '标准全称': 'Pacific Standard Time', '当前缩写': 'PDT'}

方法2:使用pytz库(兼容更早Python版本)

如果用的是Python3.9以下版本,或者需要更精准的时区名称控制,先安装pytz:

pip install pytz

再运行以下代码:

from timezonefinder import TimezoneFinder
import pytz
import datetime

tf = TimezoneFinder()

tz_id1 = tf.timezone_at(lat=40.4467, lng=-80.0158)
tz_id2 = tf.timezone_at(lat=39.7439, lng=-105.02)
tz_id3 = tf.timezone_at(lat=37.403, lng=-121.97)

def parse_timezone(tz_id):
    if not tz_id:
        return None
    tz = pytz.timezone(tz_id)
    now = datetime.datetime.now(tz)
    # 获取当前时区缩写(自动适配夏令时)
    current_abbr = tz.tzname(now)
    # 直接获取标准时区全称
    standard_full_name = tz._tzname[0]
    # 提取短名称
    short_name = standard_full_name.split()[0]
    return {
        "短名称": short_name,
        "标准全称": standard_full_name,
        "当前缩写": current_abbr
    }

print(parse_timezone(tz_id1))
print(parse_timezone(tz_id2))
print(parse_timezone(tz_id3))

说明

  • 两种方法都无需手动维护大量时区映射,依赖成熟的时区库自动处理,适合大规模时区转换场景。
  • 如果需要固定输出标准时区名称(不受夏令时影响),可以直接取standard_full_name;如果要当前实际生效的时区缩写,取current_abbr即可。

内容的提问来源于stack exchange,提问作者Simon1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:43:10