【问题标题】:django template changed date format from querysetdjango 模板从查询集更改了日期格式
【发布时间】:2013-03-27 00:20:28
【问题描述】:

我创建了一个查询集:

my_data = My_User.objects.filter(Q(first_name = 'John') |
                                  Q(last_name = 'Doe'))

现在my_data 中的字段之一具有日期 (type: datetime.datetime) db 中此日期字段的格式为 yyyy-mm-dd HH:MM:SS 例如:2013-04-01 12:50:58

但是当我通过 django 模板显示此信息时,默认情况下日期格式会更改! 显示时间:2013 年 4 月 1 日下午 12:50

模板中的代码:

{% for each_user in my_data %}
<tr>
  <td>{{each_user.timestamp}}</td>
  <td>{{each_user.first_name}}</td>
  <td>{{each_user.last_name}}</td>
  <td>{{each_user.address}}</td>
</tr>
{% endfor %}

我希望日期格式为:mm-dd-yyyy HH:MM:SS AM/PM。 有什么建议吗?

【问题讨论】:

    标签: django django-templates django-queryset


    【解决方案1】:

    django 模板的默认日期格式为: 'N j, Y' (e.g. Feb. 4, 2003) 因此,您会从数据库中看到不同的日期格式。 你可以阅读更多关于这个here

    您可以使用内置日期过滤器格式化日期:

    {{each_user.timestamp|date:"%d/%m/%y %H:%M"}}
    

    您可以将"%d/%m/%y %H:%M" 替换为您希望的任何格式。

    "%d/%m/%y %H:%M" 为您提供"21/11/06 16:30" 的格式

    更多信息:here

    【讨论】:

    • 好的,当我尝试 {{each_user.timestamp|date:"%d/%m/%y %H:%M"}} 时,输出真的很奇怪!像这样:“%20/%03/%13 %12:%Mar”。但我最终使用 {{each_user.timestamp|date:"SHORT_DATETIME_FORMAT"}} 它对我有用。感谢您的回复和链接:)
    【解决方案2】:

    你应该只使用:

    {{each_user.timestamp|date:"m-d-Y h:i:s A"}}
    

    这些在第一个答案的第二个链接中,“内置 Django 模板过滤器以格式化日期”。您需要的说明如下:

    m   Month, 2 digits with leading zeros.                '01' to '12'
    d   Day of the month, 2 digits with leading zeros.     '01' to '31'
    Y   Year, 4 digits.                                    '1999'
    h   Hour, 12-hour format.                              '01' to '12'
    i   Minutes.                                           '00' to '59'
    s   Seconds, 2 digits with leading zeros.              '00' to '59'
    A   'AM' or 'PM'.                                      'AM'
    

    但请注意,传递给模板的数据必须是 datetime 的对象。由于序列化程序,我曾经遇到过这个问题;这些值作为字符串传递,而不是datetime,因此无法解析;我只看到空字符串,而不是格式化字符串。

    但是,接受的答案建议的第一部分用于datetime.datetime.strf(p)time;带有% 的字符串用于解析或格式化日期。它们是 python 的一部分,而不是 Django 的一部分。如果您想在视图中格式化日期,它们很有用。

    【讨论】:

      猜你喜欢
      • 2019-05-29
      • 2014-10-11
      • 2011-12-05
      • 2017-10-04
      • 1970-01-01
      • 2014-10-25
      • 2013-12-12
      • 2015-01-15
      • 1970-01-01
      相关资源
      最近更新 更多