首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为天真的日期时间添加tzinfo会导致奇怪的偏移量?

为天真的日期时间添加tzinfo会导致奇怪的偏移量?
EN

Stack Overflow用户
提问于 2021-09-03 10:22:07
回答 2查看 115关注 0票数 0

我只是尝试为我的datetime对象添加datetime(没有特定的时间)。我有str格式的日期,str格式的时区。我创建了这个函数:

代码语言:javascript
复制
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":

代码语言:javascript
复制
a = _converttime("2018-01-01", "Etc/GMT-6")
        print(f'a: {a}')
>>a: 2018-01-01 00:00:00+06:00

但是看看这个:

代码语言:javascript
复制
 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:19,05:18,而现在应该是03:00,-05:00?这会引起最近的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-11 06:23:14

好的,我不知道这有什么问题,但是我使用django make_aware找到了解决方案:

代码语言:javascript
复制
from django.utils.timezone import make_aware

def _converttime2(dt_str, tz_str):
    dt = datetime.fromisoformat(dt_str)
    tz = pytz.timezone(tz_str)
    dt = make_aware(dt, tz)
    return dt
票数 0
EN

Stack Overflow用户

发布于 2021-09-03 10:54:58

我认为您要做的是使用tz.localize,您的函数将变成:

代码语言:javascript
复制
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

有了这个函数,你就得到了正确的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69043359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档