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

Python中使用strptime转换字符串为datetime格式异常问题

问题核心:datetime对象不存储格式

datetime/date对象本身没有固定格式,它们只存储日期时间的数值信息。你看到的打印结果,是Python默认的对象显示格式,和strptime的解析规则无关。

你的代码逻辑里:

  • date.today()返回的是date对象,打印时用Python默认的YYYY-mm-dd格式
  • strftime("%d-%m-%Y %H:%M:%S")是把date对象转换成指定格式的字符串,所以这一步打印的是正确的格式化字符串
  • datetime.strptime(...)是把字符串解析回datetime对象,此时打印这个对象,Python会用它默认的YYYY-mm-dd HH:MM:SS格式输出,但对象存储的日期时间值是完全正确的——根本不是“格式变回”,只是显示方式变了。
正确做法:需要显示时再格式化

如果要得到dd/mm/YYYY格式的输出,需要把解析后的datetime对象再次用strftime转换成字符串。修改后的代码如下:

import datetime
from datetime import datetime, date

today = date.today()
print(today)  # 输出默认date格式:YYYY-mm-dd

# 将date对象转为指定格式的字符串
today_str = today.strftime("%d-%m-%Y %H:%M:%S")
print(today_str)  # 输出:dd-mm-YYYY HH:MM:SS

# 解析字符串为datetime对象
today_dt = datetime.strptime(today_str, "%d-%m-%Y %H:%M:%S")
print(today_dt)  # 输出datetime对象默认格式:YYYY-mm-dd HH:MM:SS

# 再次格式化,得到dd/mm/YYYY格式的字符串
formatted_result = today_dt.strftime("%d/%m/%Y")
print(formatted_result)  # 输出:dd/mm/YYYY
关键总结
  • strptime的作用是解析字符串为datetime对象,不是设置对象的显示格式
  • strftime的作用是将datetime/date对象转换为指定格式的字符串
  • 只要datetime对象的数值正确,随时可以用strftime转换成你需要的任何格式字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:45:32