【发布时间】:2013-07-02 12:16:40
【问题描述】:
我一直在处理 django 中的一个小问题,但我还没有完全弄清楚。我有一个在 godaddy vps 上运行的 django 应用程序,在 views.py 中我将这些行作为函数定义的一部分
currtime=datetime.datetime.now()
return render_to_response('test.html',{'currtime' : currtime })
现在在我的 test.html 中,我使用模板来获取当前时间
{% load tz %}
{% localtime on %}
<p>{{currtime}}</p>
{% endlocaltime %}
我相信 django 中的时区感知日期时间对象的要点是在通过模板呈现 HTML 时自动将时间转换为本地时间。如您在上面看到的,我已经加载了 pytz 库并启用了本地时间...即使我在印度,我仍然得到一个当前时间值,它与德克萨斯州的时间相同 CDT 。 我希望它工作的原因是,我有一个日期时间存储在 UTC 的数据库,我希望根据用户的地理位置以本地时间显示时间(即从 UTC 转换为本地时间)。 任何帮助将不胜感激,谢谢。
【问题讨论】:
-
你是否在settings.py文件中设置了时区:TIME_ZONE = '...'
-
也可以看看 USE_TZ。 docs.djangoproject.com/en/dev/ref/settings/#use-tz
-
@Carl TIME_ZONE 设置为 America/Chicago,我尝试将其注释掉,但它仍然显示芝加哥时间。我应该在这里设置什么?另外 USE_TZ = True 在我的设置文件中,从我读到的内容中说 USE_TZ 需要为 True 才能感知时区的日期时间,谢谢您的回复
-
嗨,注释掉 TIME_ZONE 将不起作用,因为芝加哥是默认设置,您必须将其设置为您想要的时区,USE_TZ 默认为 False,我认为您应该尝试设置 TIME_ZONE到您的时区,然后将 USE_TZ 设置为 True。
-
但是将时区设置为我的时区将无济于事,因为如果其他国家/地区的其他人尝试访问服务器,它将不会转换为本地时间.. USE_TZ 在我的 settings.py 文件中为 True。 .