【问题标题】:python convert timezone issuepython转换时区问题
【发布时间】:2018-02-03 14:47:22
【问题描述】:

我有 Jalaali 日期和时间作为伊朗时区,我想做的是分别将它们转换为公历日期和 UTC 时间,然后创建一个 Django 日期时间对象以将其保存在我的模型中,一切正常,但是当我尝试保存它,它会为它们保存以前的值(在使用 astimezone 转换之前), 但是如果从日期时间对象中删除 tzinfo,保存问题就会消失 这是我的代码:

import datetime
import pytz
gregorian_dict = {'gy':2018,'gm':2,'gd':3}
time_list = [9,0,0]
gregorian_date_iran_time = pytz.timezone('Iran').localize(datetime.datetime(gregorian_dict['gy'], gregorian_dict['gm'], gregorian_dict['gd'],time_list[0],time_list[1],time_list[2]))
gregorian_date_utc_time = gregorian_date_iran_time.astimezone(pytz.utc)

到目前为止一切正常 并且需要输出, 但是当我尝试保存它时,gregorian_date_iran_time 的值被保存,即使打印是所需的值

suggestion = Suggest()
suggestion.request = online_request
suggestion.teacher = teacher
suggestion.session_length = length
print(gregorian_date_utc_time)
# 2018-02-03 05:30:00+00:00
suggestion.date = gregorian_date_utc_time
print(suggestion.date)
# 2018-02-03 05:30:00+00:00
suggestion.save()

但是当我这样做时,我会在保存后得到正确的结果

gregorian_date_utc_time = gregorian_date_utc_time.replace(tzinfo=None)

我不知道我是否犯了一个错误或忘记了什么 解决方案是什么?

编辑 在数据库中查找并发现存储在数据库中的值是存储在数据库中的值是正确的,但是在 django admin 中我得到 9:00:00

2018-02-03 05:30:00.000000

怎么了?

【问题讨论】:

    标签: python django datetime timezone


    【解决方案1】:

    默认情况下,Django 管理员将使用current timezone 来呈现您的日期时间字段,您应该使用activate 将当前时区设置为最终用户的实际时区。

    【讨论】:

    • 听起来不错,django 完全颠覆了我的做法,所以我只是让事情按原样进行,只是转换日期,tnks
    猜你喜欢
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    相关资源
    最近更新 更多