python - 为天真的日期时间添加 tzinfo 会导致奇怪的偏移量?
问题描述
我只是想tzinfo
为我的datetime
对象添加(没有特定时间)。我有格式的日期和str
格式的时区str
。我创建了这个函数:
from datetime import datetime
import pytz
def _converttime(dt_str, tz_str):
dt = datetime.fromisoformat(dt_str)
tz = pytz.timezone(tz_str)
dt = dt.replace(tzinfo=tz)
return dt
当我使用时,一切看起来都很好tzinfo
:“Etc/GMT-6”:
a = _converttime("2018-01-01", "Etc/GMT-6")
print(f'a: {a}')
>>a: 2018-01-01 00:00:00+06:00
但看看这个:
b = _converttime("2018-01-01", "Europe/Kirov")
print(f'b: {b}')
>>b: 2018-01-01 00:00:00+03:19
c = _converttime("2018-01-01", "America/Panama")
print(f'c: {c}')
>>c: 2018-01-01 00:00:00-05:18
为什么我应该在 03:00、-05:00 时得到像 03:19、05:18 这样的奇怪值?它最近引起了问题。
解决方案
我认为您想要做的是使用tz.localize
,您的功能将变为:
from datetime import datetime
import pytz
def _converttime(dt_str, tz_str):
dt = datetime.fromisoformat(dt_str)
tz = pytz.timezone(tz_str)
dt = tz.localize(dt)
return dt
使用此功能,您可以获得正确的结果。
推荐阅读
- python - Python Selenium 多线程将每个线程的值加在一起
- python - 在 python 中向 sqlite3 数据库添加按钮文本
- vue.js - 在具有多个组件的 Vue 中单击事件作为父级
- javascript - 'Nuxt generate' 后 Axios POST 不工作
- php - 为什么我无法使用 VichUploaderBundle 和 Symfony 5 在我的网页上显示图像?
- osgi - Karaf Bundle.getState() 与 bundle:list 中的 bundle 状态不完全匹配
- spring - Spring data jpa避免内存分页和n+1使用规范
- reactjs - 试图在特定页面上隐藏父组件
- sas - 打破 SAS 分类的联系
- python - 为什么我的第二个 Jinja for 循环没有运行?