如何在Django中正确格式化显示DateTime字段的日期时间?
Django DateTimeField 格式化显示完整日期时间
你在模型中定义的date_added = models.DateTimeField(auto_now_add=True)已经正确记录了上传的完整日期时间,只是模板默认显示格式未输出全部时间信息。以下几种方法可实现月、日、年、时、分、秒的格式显示:
方法一:使用模板date过滤器(推荐)
直接在模板中对date_added应用date过滤器,指定目标格式:
{% block content %} <div class="container"> <tr> <td> CAR LIST </td> <td> Date Added </td> </tr> {% for car in cars %} <tr> <td><a href="{% url 'show-car' car.car_id %}">{{ car }}</a></td> <td>{{ car.date_added|date:"m/d/Y H:i:s" }}</td> </tr> {% endfor %} </div> {% endblock %}
格式符号说明:
m: 两位数字月份(01-12)d: 两位数字日期(01-31)Y: 四位数字年份(如2024)H: 24小时制小时数(00-23)i: 两位数字分钟(00-59)s: 两位数字秒数(00-59)
若需12小时制带AM/PM标识,可改用格式"m/d/Y h:i:s A"。
方法二:在模型中定义格式化方法
在Car模型中添加自定义方法,返回格式化后的日期时间:
# models.py class Car(models.Model): # 其他字段... date_added = models.DateTimeField(auto_now_add=True) def get_formatted_date(self): return self.date_added.strftime("%m/%d/%Y %H:%M:%S")
随后在模板中调用该方法:
<td>{{ car.get_formatted_date }}</td>
方法三:全局设置默认日期时间格式
若希望项目中所有DateTimeField统一使用该格式,修改settings.py配置:
# settings.py DATETIME_FORMAT = "m/d/Y H:i:s" USE_L10N = False # 关闭本地化,确保自定义格式生效
修改后,模板中直接写{{ car.date_added }}即可自动应用该格式。
内容的提问来源于stack exchange,提问作者dtvirt_
相关产品推荐
相关产品推荐

