如何在Django模板中格式化日期时间?

81 投票
5 回答
145272 浏览
提问于 2025-04-15 13:08

这个:

{{ wpis.entry.lastChangeDate|date:"D d M Y" }}

给我的结果是(为什么会这样?):

2009-07-24 21:45:38.986156 

而且,我不知道怎么跳过小数部分...

在我的模型中,我有:

addedDate = models.DateTimeField(default=datetime.now)

5 个回答

5

我怀疑 wpis.entry.lastChangeDate 在视图中被转变成了字符串,之后才传到模板里。

为了验证这个猜想,你可以在视图中检查一下这个值是否有一些只有字符串才有的属性或方法,比如说 wpis.entry.lastChangeDate.upper,然后看看模板是否会出错。

你也可以自己创建一个自定义过滤器,用来调试,检查这个对象,并把检查的结果写到页面上,或者直接输出到控制台。这样你就能查看这个对象,确认它是否真的是一个日期时间字段。

另外,顺便问一下,为什么不使用 models.DateTimeField(auto_now_add=True) 来在创建时设置日期时间呢?

233

这正是你想要的。试试这个:

{{ wpis.entry.lastChangeDate|date:'Y-m-d H:i' }}
10

你可以这样做:

addedDate = datetime.now().replace(microsecond=0)

撰写回答