【问题标题】:Django: Local time representation with class-based views and crispy formsDjango:具有基于类的视图和清晰表单的本地时间表示
【发布时间】:2020-12-05 03:19:40
【问题描述】:

我正在用 Django 建立一个拍卖网站。它可能被不同时区的用户使用,因此我决定所有基础日期和时间(例如模型中的日期时间值)都将采用 UTC。

我正在使用基于类的视图(ListView、DetailView 等)和清晰的显示。

在页面上转换为当地时间的最佳策略是什么?我应该在视图中还是在模板中进行?

【问题讨论】:

  • 在模板上转换。你可以试试 MomentJs。

标签: 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 %}

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 2012-08-18
    • 2019-11-10
    • 1970-01-01
    • 2011-05-28
    • 2011-09-18
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多