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

使用datetime的strftime与strptime时格式不符问题咨询

问题分析与解决办法

首先得澄清一个关键误解:strptime()的作用是把字符串解析成datetime对象,而非用来格式化输出。你看到的2018-05-09 00:00:00其实是datetime对象的默认字符串表示,并不是strptime的“错误输出”哦。

你当前代码的问题拆解:

  1. 第一行Date = datetime.datetime.today().strftime("%d %B %Y")生成的是带补零日期的字符串,比如"09 May 2018"(%d表示补零的两位日期格式)。
  2. 第二行用strptime把这个字符串转回datetime对象,当你打印这个对象时,Python会自动用它默认的%Y-%m-%d %H:%M:%S格式来显示,这就是你得到当前结果的原因。

正确获取无补零格式的方法:

想要直接得到9 May 2018这种无补零的日期字符串,完全不需要绕到strptime,直接在strftime里用对应指令就行——不过这个指令在不同操作系统上有差异:

  • 在Unix/Linux/macOS系统,用%-d表示无补零的日期:
    import datetime
    date_str = datetime.datetime.today().strftime("%-d %B %Y")
    print(date_str)  # 输出:9 May 2018
    
  • 在Windows系统,用%#d表示无补零的日期:
    import datetime
    date_str = datetime.datetime.today().strftime("%#d %B %Y")
    print(date_str)  # 输出:9 May 2018
    

如果已经有一个datetime对象,想要转成无补零格式,同样用strftime处理就行,比如:

now = datetime.datetime.today()
formatted_date = now.strftime("%-d %B %Y")  # Windows系统换成%#d
print(formatted_date)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:03:55