首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python将时间戳从UTC转换为本地时区

Python将时间戳从UTC转换为本地时区
EN

Stack Overflow用户
提问于 2022-06-30 14:10:02
回答 1查看 202关注 0票数 1

我正在与Django + DRF合作,开发REST。我已经将django设置配置为在以下方面使用时区支持:

代码语言:javascript
复制
USE_I18N = True
USE_L10N = True
USE_TZ = True

如前所述,我的数据库正在UTC中接收和存储数据。我的问题是,对于某些用户(每个用户都有他们的配置),我必须在他们的时区(通常在UTC-3或UTC-2中)返回响应。我读了几篇文章,尝试了几种组合:astimezonenormalize,但没有成功。谨随函附上我的努力:

代码语言:javascript
复制
timezone_arg = pytz.timezone('America/Buenos_Aires')
print(ts_a, ts_b)
ts_a = ts_a.astimezone(timezone_arg) 
ts_b = ts_b.astimezone(timezone_arg) 
print(ts_a, ts_b)

utc = pytz.timezone('UTC')
ts_a = timezone_arg.normalize(ts_a.astimezone(utc))
ts_b = timezone_arg.normalize(ts_b.astimezone(utc))
print(ts_a, ts_b)

我得到了以下信息:

代码语言:javascript
复制
2022-06-17 05:39:09 2022-06-17 05:46:49
2022-06-17 05:39:09-03:00 2022-06-17 05:46:49-03:00
2022-06-17 05:39:09-03:00 2022-06-17 05:46:49-03:00

我知道django正在解释我要告诉你的是时间戳已经在UTC-3.它正在将它们正常化到世界协调时。但我想要的是从UTC到UTC-3。我的投入/产出应该是:

代码语言:javascript
复制
2022-06-17 05:39:09 2022-06-17 05:46:49
2022-06-17 02:39:09 2022-06-17 02:46:49

由于我不仅处理阿根廷时区(UTC-3),我无法计算3小时的时间增量。对于其他客户来说,差别可能是不同的。我的最后一个资源是在规范化时间戳结束时使用-03:00:00,并执行减法。但我想知道是否有一个更直接和正确的way.These时间戳直接发送给用户,必须容易阅读。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-30 14:55:37

会是这样的:

代码语言:javascript
复制
from datetime import datetime
from dateutil import tz

from_zone = tz.tzutc()
to_zone = tz.tzlocal()

utc = datetime.strptime('2022-06-17 05:39:09', '%Y-%m-%d %H:%M:%S')

utc = utc.replace(tzinfo=from_zone)

# Convert to local time zone
to_local_time = utc.astimezone(to_zone)

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

https://stackoverflow.com/questions/72817305

复制
相关文章

相似问题

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