discord.py中datetime不同时区转换:UTC转EST等时区的实现方法问询
时区转换解决方案
你当前输出为UTC时间是因为默认生成的datetime对象没有主动指定目标时区,若你的运行环境系统时区为UTC,就会默认输出UTC时间。可通过以下两种方案实现指定时区转换:
方案1:Python 3.9+ 内置zoneinfo模块(无需安装第三方依赖)
该方案使用Python标准库自带的时区处理能力,可自动适配对应时区的冬令时/夏令时规则。
- 导入对应模块
import datetime from zoneinfo import ZoneInfo
- 修改Last Seen字段的赋值代码,指定目标时区即可:
embed.add_field(name = "**Currently Playing**" , value = "Offline" , inline = True) # 示例为美国纽约时区,自动切换EST/EDT,如需固定纯EST(UTC-5)可替换为"Etc/GMT+5" embed.add_field(name = "**Last Seen**" , value = datetime.datetime.fromtimestamp(int(lastseen), tz=ZoneInfo("America/New_York")).strftime('%Y-%m-%d at %H:%M %z %Z') , inline = True)
方案2:低版本Python使用pytz第三方库
如果你的Python版本低于3.9,可使用成熟的pytz库处理时区:
- 先安装pytz
pip install pytz
- 导入模块并修改代码
import datetime import pytz embed.add_field(name = "**Currently Playing**" , value = "Offline" , inline = True) embed.add_field(name = "**Last Seen**" , value = datetime.datetime.fromtimestamp(int(lastseen), tz=pytz.timezone("America/New_York")).strftime('%Y-%m-%d at %H:%M %z %Z') , inline = True)
其他时区替换规则
如需切换为其他指定时区,只需将代码中的时区标识符替换为对应值即可,常用时区标识符示例:
- 中国标准时间:
Asia/Shanghai - 英国伦敦时间:
Europe/London - 日本东京时间:
Asia/Tokyo
内容的提问来源于stack exchange,提问作者Ethan Armstrong
相关产品推荐
相关产品推荐

