使用模板的django的时区感知日期时间

时间:2013-07-04 13:10:10

标签: python django datetime

我一直在研究django中的一个小问题,但我还是无法弄明白。我有一个在godaddy vps和views.py上运行的django应用程序我将这些行作为函数定义的一部分

    currtime=datetime.datetime.now()
            return render_to_response('test.html',{'currtime' : currtime })

现在在我的test.html中,我使用模板来获取时间

          {% load tz %}
          {% localtime on %} 
          <p>{{currtime}}</p>
          {% endlocaltime %}

我相信django中时区感知日期时间对象的意思是在通过模板呈现HTML时自动将时间转换为LOCAL时间。正如您在上面所看到的,我已经加载了pytz库并启用了本地时间...即使我在印度,我仍然得到当前时间值,这与德克萨斯州的CDT时间相同。  我希望这个工作的原因是,我有一个数据库,其日期时间以UTC格式存储,我想根据用户的地理位置以当地时间(即从UTC转换为本地时间)显示时间。  任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

我只是偶然在谷歌搜索相关问题,但我想我会回答,以防有人发现它......

您之后所做的工作没有用,因为本地时间表示服务器上的本地时间(以您设置中定义的时区表示)。在服务器上运行的django应用程序无法确定客户端的时区是什么。您应该在浏览器中检测时区,例如使用jstz

更强大的解决方案是让用户选择自己的时区,还可以使用自动检测设置选择(这样大多数时候他们只需按OK)。当然,您可以将其存储在服务器上,从那时起,您可以使用用户的时区生成模板:

{% loadtz %}
{% timezone user.timezone %}
.....
{% endtimezone %}