我创建了一个查询集:
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。 有什么建议吗?
答案 0 :(得分:2)
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
答案 1 :(得分: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的一部分。如果要在视图中设置日期格式,它们很有用。