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

Python将日期转为无前置零日月年格式(如9November2021)的跨平台问题

问题原因

strftime的去前导零格式符存在平台差异:

  • MacOS/Linux等Unix系系统使用%-d输出无前导零的日期
  • Windows系统需使用%#d实现相同效果,直接写%-d就会抛出格式错误
最优跨平台解决方案

推荐直接通过date对象自带属性拼接,完全不依赖平台格式符差异,代码最稳定:

from datetime import date
d = date(2021, 11, 9)
result = f"{d.day}{d.strftime('%B')}{d.year}"
print(result) # 输出:9November2021

说明:d.day是整数类型,直接输出时本身就不带前导零,%B是全平台通用的月份全称格式符,无需额外适配。
如果需要固定输出英文月份,避免系统区域设置影响输出结果,可以额外增加区域配置:

import os
import locale
from datetime import date
# 临时设置时间类区域为英文
locale.setlocale(locale.LC_TIME, 'en_US.UTF-8' if os.name != 'nt' else 'English_US')
d = date(2021, 11, 9)
result = f"{d.day}{d.strftime('%B')}{d.year}"
# 用完可改回默认区域
locale.setlocale(locale.LC_TIME, '')
可选方案:动态适配平台格式符

如果坚持使用strftime全格式字符串实现,可以加平台判断逻辑:

import os
from datetime import date
d = date(2021, 11, 9)
fmt = '%#d%B%Y' if os.name == 'nt' else '%-d%B%Y'
result = d.strftime(fmt)
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:06:03