You need to enable JavaScript to run this app. 如何在Django视图中将当前时间格式化为年-月-日格式
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django视图中将当前时间格式化为年-月-日格式

Django中将当前时间格式化为「年-月-日」的实现方法

你当前代码直接打印timezone.now()返回的是完整带时区的datetime对象的字符串表示,包含时分秒、微秒、时区偏移的冗余信息,只要对拿到的时间对象做格式化处理,就能输出你需要的纯「年-月-日」格式结果,可参考以下几种常用实现方式:

基础格式化写法

直接利用datetime对象自带的strftime方法,通过格式串匹配需要的输出结构:

from django.utils import timezone

now = timezone.now()
# %Y 对应四位年份,%m 对应两位月份,%d 对应当天日期
formatted_date = now.strftime("%Y-%m-%d")
print('date :', formatted_date)

运行后即可输出date : 2020-12-31的预期结果。

适配本地时区的稳妥写法

你当前拿到的时间结果带+00:00标记,是UTC标准时间。如果你的项目配置了非UTC的本地时区(比如国内常用的Asia/Shanghai),直接格式化UTC时间可能会因为时区差导致日期出现偏差(跨零点时可能差1天)。这种情况可以先通过Django内置的localtime方法把时间转为项目配置的本地时区时间,再做格式化:

from django.utils import timezone

# 转换为项目配置的本地时区时间
local_time = timezone.localtime(timezone.now())
formatted_date = local_time.strftime("%Y-%m-%d")
print('date :', formatted_date)

用Django封装的格式化方法

Django自带了专门的日期格式化工具,和Python原生strftime逻辑一致,但会自动适配项目的全局语言、时区配置:

from django.utils import timezone
from django.utils.formats import date_format

now = timezone.now()
# 'Y-m-d' 对应固定的年-月-日格式
formatted_date = date_format(now, 'Y-m-d')
print('date :', formatted_date)

常见注意点

  • 不要通过字符串切片的方式截取日期部分,碰到不同的时间格式变更很容易出现截取错误
  • 如果格式化后的日期是用于传给前端模板渲染,不需要在视图里手动处理,模板里直接通过内置过滤器{{ 时间对象|date:"Y-m-d" }}就能输出对应格式,减少重复逻辑

内容的提问来源于stack exchange,提问作者Ahmed Yasin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.11 08:45:04