python转换时区问题

时间:2018-02-03 14:47:23

标签: python django datetime timezone

我有Jalaali日期和时间作为伊朗时区,我想要做的是分别将它们分别转换为格里高利时和UTC时间,然后创建一个Django日期时间对象以将其保存在我的模型中,一切正常但是当我尝试保存它,它为它们保存以前的值(在使用astimezone转换之前), 但如果从datetime对象中删除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

出了什么问题?

1 个答案:

答案 0 :(得分:0)

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