django 模板中的时区感知日期时间对象

law*_*man 8 python django datetime

我无法理解如何在 django db 中使用 datetime 对象。

我正在存储datetime.now()DateTimeField但无法以可读的方式显示它。目前它显示UTC时间。

我应该使用日期时间字段存储时区,还是应该在查询和模板视图期间始终将其转换为我的时区?

这太复杂了,我一定是完全错误的。

如果是这种情况,我将如何在模板中显示太平洋时区时间?

谢谢你。

<tbody>
  {% for session in session_list %}
      <tr></tr><td>{{session.date}}</td><td>{{session.email}}</td><td>{{session.userData}}</td></tr>
  {% endfor %}

</tbody>
Run Code Online (Sandbox Code Playgroud)

Hai*_*ang 6

*) 您可以使用模板标签启用或禁用感知日期时间对象的转换:

{% load tz %}

{% localtime on %}
    {{ value }}
{% endlocaltime %}

{% localtime off %}
    {{ value }}
{% endlocaltime %}
Run Code Online (Sandbox Code Playgroud)

*) 在 中setting.py,您可以配置TIME_ZONEUSE_TZ

以 UTC 时间存储日期时间是好的(以下引用来自 Django 网站):

在您的数据库中以 UTC 格式存储数据仍然是一个好习惯。主要原因是夏令时 (DST)。许多国家都有夏令时系统,时钟在春季向前移动,在秋季向后移动。如果您在当地时间工作,当转换发生时,您每年可能会遇到两次错误。(pytz 文档更详细地讨论了这些问题。)这对您的博客可能无关紧要,但是如果您每年两次、每年两次向客户多付或少付一小时,这就是一个问题。解决这个问题的办法是在代码中使用UTC,只有在与最终用户交互时才使用本地时间。

官方 Django 站点阅读更多信息