Python 3.11获取禁用夏令时的本地标准时间的正确方法
在Python 3.11中获取本地标准时间(忽略夏令时)
不用依赖已弃用的pytz,直接用Python内置的datetime和zoneinfo模块就能搞定,分两种通用方法:
方法一:自动适配本地时区(推荐)
这种方法会自动识别你的本地时区,然后自动扣除夏令时偏移(如果当前处于夏令时):
- 先导入需要的模块:
from datetime import datetime from zoneinfo import ZoneInfo
- 获取带时区的本地时间,再计算标准时间:
# 获取本地时区 local_tz = ZoneInfo("local") # 获取带时区的当前时间 now_with_tz = datetime.now(local_tz) # 获取夏令时偏移量(如果不在夏令时,返回timedelta(0)) dst_offset = now_with_tz.dst() # 计算标准时间:如果有夏令时偏移就减去,否则直接用当前时间 standard_time = now_with_tz - dst_offset if dst_offset else now_with_tz print("本地标准时间:", standard_time)
如果运行时报时区相关错误,可能是系统缺少时区数据,安装tzdata包即可:
pip install tzdata
方法二:手动指定固定偏移时区
如果你明确知道本地标准时间的UTC偏移(比如中国标准时间是UTC+8,美国东部标准时间是UTC-5),可以直接创建固定偏移的时区:
from datetime import datetime, timezone, timedelta # 比如设置为UTC+8(中国标准时间) standard_tz = timezone(timedelta(hours=8)) standard_time = datetime.now(standard_tz) print("本地标准时间:", standard_time)
这种方法适合你确认时区偏移不会变化的场景,缺点是无法自动适配时区调整。
内容的提问来源于stack exchange,提问作者orsapihki wiioiv
相关产品推荐
相关产品推荐

