【问题标题】:Django: Local time representation with class-based views and crispy formsDjango:具有基于类的视图和清晰表单的本地时间表示
【发布时间】:2020-12-05 03:19:40
【问题描述】:
我正在用 Django 建立一个拍卖网站。它可能被不同时区的用户使用,因此我决定所有基础日期和时间(例如模型中的日期时间值)都将采用 UTC。
我正在使用基于类的视图(ListView、DetailView 等)和清晰的显示。
在页面上转换为当地时间的最佳策略是什么?我应该在视图中还是在模板中进行?
【问题讨论】:
标签:
django
django-class-based-views
【解决方案1】:
感谢@Ejaz。我决定反对 Moment.js,但这让我朝着正确的方向前进——我没想过用 Javascript 来做。我在基本模板中添加了一个函数,然后从单个模板中调用它
{# base.html #}
<script>
function utc2local_dt(utcDateTime) {
const options = { year: 'numeric', month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit', hour12: false };
var localDateTime = new Date(utcDateTime).toLocaleDateString('en-GB', options);
return localDateTime;
}
</script>
{# myTemplate.html #}
<td><a id="local-dt-auction-end" class="" href="#"></a></td>
.
.
<script>
document.getElementById("local-dt-auction-end").text = utc2local_dt('{{ listing.datetime_auction_end|date:"c" }}');
</script>
{% endblock content %}