0

我创建了一个查询集:

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

现在,数据库中此日期字段的my_data日期(type: datetime.datetime)格式中的一个字段是 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。有什么建议么?

4

2 回答 2

2

django 模板的默认日期格式是: 'N j, Y' (e.g. Feb. 4, 2003) 因此您会从数据库中看到不同的日期格式。您可以在此处阅读有关此内容的更多信息

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

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

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

"%d/%m/%y %H:%M"给你格式"21/11/06 16:30"

更多信息:这里

于 2013-04-04T19:00:09.497 回答
1

你应该只使用:

{{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 的一部分。如果您想在视图中格式化日期,它们很有用。

于 2018-03-14T16:03:51.193 回答