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

如何用Python将datetime(YYYY,MM,DD)格式转为YYYY/MM/DD?

解决方法

首先明确:你拿到的datetime(2015, 12, 1)是字符串格式(JSON无法直接返回Python的datetime实例),不需要复杂的文本块解析,用简单的字符串处理或正则就能提取日期数值,转成datetime对象后既可以格式化输出,也能直接做减法运算。

方法一:正则表达式提取(最通用)

利用正则匹配字符串中的数字,快速提取年、月、日:

import re
from datetime import datetime

# 示例输入字符串
create_date_str = "datetime(2015, 1, 1)"
target_date_str = "datetime(2015, 12, 1)"

# 提取所有数字并转为整数
create_nums = list(map(int, re.findall(r'\d+', create_date_str)))
target_nums = list(map(int, re.findall(r'\d+', target_date_str)))

# 转为datetime对象
create_date = datetime(*create_nums)
target_date = datetime(*target_nums)

# 1. 格式化输出YYYY/MM/DD
formatted_create = create_date.strftime("%Y/%m/%d")
formatted_target = target_date.strftime("%Y/%m/%d")
print(formatted_create)  # 输出: 2015/01/01
print(formatted_target)  # 输出: 2015/12/01

# 2. 日期减法运算
delta = target_date - create_date
print(f"两个日期相差 {delta.days} 天")  # 输出: 两个日期相差 334 天

方法二:字符串分割(无依赖更轻量)

如果不想用正则,直接通过字符串切片和分割提取数值:

from datetime import datetime

create_date_str = "datetime(2015, 1, 1)"
# 去除首尾的datetime(和),再按逗号分割
year, month, day = map(int, create_date_str.strip('datetime()').split(','))
create_date = datetime(year, month, day)

# 后续格式化、运算和方法一一致
formatted_date = create_date.strftime("%Y/%m/%d")

关键提示

不需要先转成YYYY/MM/DD字符串再做减法——datetime对象本身支持直接运算,得到的timedelta对象可以直接获取天数、秒数等差值,比字符串转来转去更高效可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:30:46