gpt4 book ai didi

python - 为什么 python datetime replace timezone 返回不同的时区?

转载 作者:太空宇宙 更新时间:2023-11-03 12:37:20 25 4
gpt4 key购买 nike

我正在从事 Python/Django 项目。我试图让用户使用 jQuery 插件选择日期和时间 datetimepicker add-on .因此,当我现在选择选项并发布数据时,django 正在以 UTC 偏移量保存时间。这是保存在数据库中的内容,2017-03-30 13:38:00+00:00。我需要从用户的时区转换这个时间并将其作为 utc 保存在系统中。因为稍后我将运行脚本,它会在数据库中查找小于 utc 时间的数据。

实际上这个脚本是让用户在网站上发布信息,让他们选择发布日期和时间。因此,例如,如果用户发布了一篇将于芝加哥时间 4 月 2 日下午 1 点发布的文章,我不希望其他用户在此时间之前阅读该文章。因此,世界各地的人们可以在 4 月 2 日下午 1 点在芝加哥第一时间阅读文章。那么我怎样才能使这个功能发挥作用呢?

我的解决方案是使用 replace(tzinfo=pytz.timezone('America/Chicago')) 获取时间并删除它的时区信息,当我打印时间时,我得到了 2017-03-30 13:38:00-05:51。现在的实际偏移量是 -05:00。任何人都可以帮助我并告诉我我做错了什么吗?

我正在为表单做的是我的模型中有 publish_date 对象,我正在使用 django 表单来创建表单。我在其中添加了类作为属性并使用了 jquery 插件,

$('.datepicker').datetimepicker({
timeFormat: 'HH:mm',
stepHour: 1,
stepMinute: 1,
});

所以当用户提交表单时,在 post 方法上这是我的代码,

form = PublishForm(request.POST)

if form.is_valid():

f = form.save(commit=False)
f.created_by_user_id = request.user.id
f.save()

为了获取日期,我所做的只是f.publish_date,而我使用的其他选项是 lice replacelocalize非常标准。

谢谢

最佳答案

如评论中所述,您似乎有两个问题。首先是 datetimepicker 使用 UTC 时区偏移保存日期和时间,而它应该应用不同的时区或完全不使用时区偏移。其次是 pytz 使用了错误的偏移量。

我不知道如何解决第一个问题,但我可以帮助您解决第二个问题。您需要使用 pytz's localize功能。这仅在 datetime 未附加时区时有效,但由于您知道时区不正确,因此您可以先将其删除。

tz = pytz.timezone('America/Chicago')
dt = tz.localize(dt.replace(tzinfo=None))

关于python - 为什么 python datetime replace timezone 返回不同的时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43126123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com