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

2024-04-27 02:40:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做Python/Django项目。我试图让用户使用jQuery插件datetimepicker add-on选择日期和时间。所以当我选择now选项和post data时,django正在以UTC偏移量节省时间。这是保存在数据库2017-03-30 13:38:00+00:00中的内容。我需要把这个时间从用户的时区转换成utc格式保存在系统中。因为稍后我将运行脚本,在数据库中查找小于utc时间的数据。在

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

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

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

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

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

^{pr2}$

而不是获取日期,我所做的就是f.publish_date,我使用的其他选项replace和{}都非常标准。在

谢谢


Tags: django用户脚本插件信息数据库表单选项
2条回答

正如评论中提到的,你似乎有两个问题。{cd1>第一次应用时区偏移量时,应该是完全不同的时区偏移量。第二个问题是pytz使用了错误的偏移量。在

我不知道如何解决第一个问题,但我可以帮你解决第二个问题。您需要使用pytz's ^{}函数。这只在datetime没有连接时区时有效,但是既然您知道时区不正确,您可以先删除它。在

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

datetime replace(tzinfo = ...)函数的命名是不幸的。事实上,它的行为是随机的。不要用这个!在

马克的答案是该走的路。使用本地化。在

相关问题 更多 >