You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django代码中按settings.LANGUAGE_CODE格式化日期?

解决Django代码中按配置语言格式化日期的问题

Python的strftime方法依赖系统区域设置,不会自动识别Django的LANGUAGE_CODE配置,所以会输出英文日期。要在代码里生成对应语言的日期字符串,应该用Django自带的国际化工具,以下是两种可靠方案:

方案一:使用django.utils.formats.date_format

这个方法和模板中的date过滤器逻辑一致,会自动遵循当前激活的语言设置(对应settings.LANGUAGE_CODE),格式语法也和模板过滤器相同:

from django.utils.formats import date_format

self.success_message = (
    f"Eingeschrieben für <b>{date_format(self.date, 'l')}</b>, "
    f"den {date_format(self.date, 'j. F Y')}."
)
  • 'l'对应完整星期名(如德语的Sonntag)
  • 'F'对应完整月份名(如德语的Juni)
  • 无需手动处理日期前的0,date_format会自动按语言区域的习惯格式化

方案二:手动指定语言环境(适用于非视图场景)

如果在视图以外的代码(如模型、信号)中使用,Django不会自动激活语言,需要手动指定:

from django.conf import settings
from django.utils.translation import activate
from django.utils.formats import date_format

# 激活配置的语言
activate(settings.LANGUAGE_CODE)

weekday = date_format(self.date, 'l')
date_str = date_format(self.date, 'j. F Y')
self.success_message = f"Eingeschrieben für <b>{weekday}</b>, den {date_str}."

为什么不能用strftime?

Python的strftime依赖系统安装的区域包(locale),且不会读取Django的国际化配置,即使你设置了LANGUAGE_CODE,它依然会使用系统默认的区域格式,所以无法输出符合Django配置的多语言日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:22:40