You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何不设置TZ变量、不更改本地IST时区获取其他时区当前时间

无需修改本地IST时区,获取其他时区当前时间的方法

没问题!不用改动本地的IST时区,也不用全局设置TZ变量,咱们可以针对单次操作或者在代码里单独指定时区来获取PST、EST这些时区的当前时间,分两种常见场景给你详细说明:

场景1:Linux/macOS命令行直接获取

不用全局修改系统时区,每次执行命令时临时指定TZ变量即可——这个变量只在当前这条命令的会话中生效,执行完就消失,完全不会影响系统默认的IST设置:

  • 获取PST(含夏令时自动切换,实际是PDT)时间:
    TZ="America/Los_Angeles" date
    
  • 获取EST(含夏令时自动切换,实际是EDT)时间:
    TZ="America/New_York" date
    

这里用标准的Olson时区标识符(比如America/Los_Angeles)比直接写PST更靠谱,因为它会自动处理夏令时的切换,避免时间误差。

场景2:Python代码中获取指定时区时间

如果是通过代码处理时间,推荐用Python的标准库或轻量第三方库,完全不用碰系统时区设置:

方法1:Python 3.9+自带zoneinfo(无需额外安装)

Python 3.9及以上版本内置了zoneinfo模块,直接用就行:

from datetime import datetime
from zoneinfo import ZoneInfo

# 获取当前PST/PDT时间
pst_now = datetime.now(ZoneInfo("America/Los_Angeles"))
print(f"当前PST时间:{pst_now.strftime('%Y-%m-%d %H:%M:%S')}")

# 获取当前EST/EDT时间
est_now = datetime.now(ZoneInfo("America/New_York"))
print(f"当前EST时间:{est_now.strftime('%Y-%m-%d %H:%M:%S')}")

方法2:用pytz模块(兼容Python 3.9以下版本)

如果你的Python版本低于3.9,先安装pytz

pip install pytz

然后写代码:

from datetime import datetime
import pytz

# 获取当前PST/PDT时间
pst_tz = pytz.timezone("America/Los_Angeles")
pst_now = datetime.now(pst_tz)
print(f"当前PST时间:{pst_now.strftime('%Y-%m-%d %H:%M:%S')}")

# 获取当前EST/EDT时间
est_tz = pytz.timezone("America/New_York")
est_now = datetime.now(est_tz)
print(f"当前EST时间:{est_now.strftime('%Y-%m-%d %H:%M:%S')}")

小贴士:所有时区标识符都可以用pytz.all_timezones(pytz)或zoneinfo.available_timezones()(zoneinfo)查看,确保用的是标准名称,避免出错。

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

火山引擎 最新活动