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

如何使用Python修改时间实例的日期(保留时间部分)

最优实现方法

核心思路是先将时间字符串转为datetime对象,通过日期时间对象的属性/方法修改日期,最后再转回字符串,完全避免字符串拆分的繁琐和格式风险。

方法1:直接替换日期字段

如果明确要设置的年、月、日,直接用replace()方法修改datetime对象的对应属性(注意:datetime对象不可变,replace()会返回新对象):

from datetime import datetime

start_time_str = '2022-12-21 22:00:00'
# 转成datetime对象
start_time = datetime.strptime(start_time_str, '%Y-%m-%d %H:%M:%S')

# 修改为指定日期,保留原时间
new_start_time = start_time.replace(year=2022, month=12, day=28)
# 跨年月修改示例
new_start_time = start_time.replace(year=2023, month=1, day=1)

# 转回字符串格式
new_start_time_str = new_start_time.strftime('%Y-%m-%d %H:%M:%S')
print(new_start_time_str)  # 输出:2023-01-01 22:00:00

方法2:合并指定日期与原时间

如果已有目标日期的datetime对象,用datetime.combine()方法将目标日期的日期部分和原时间的时间部分合并:

from datetime import datetime

start_time_str = '2022-12-21 22:00:00'
start_time = datetime.strptime(start_time_str, '%Y-%m-%d %H:%M:%S')

# 直接创建目标日期的datetime对象(替代你代码里的错误初始化方式)
replacing_date = datetime(2022, 12, 28)

# 合并日期与原时间
new_start_time = datetime.combine(replacing_date.date(), start_time.time())

# 转回字符串格式
new_start_time_str = new_start_time.strftime('%Y-%m-%d %H:%M:%S')
print(new_start_time_str)  # 输出:2022-12-28 22:00:00

方法优势

  • 基于datetime对象操作,不受字符串格式细微变化影响(只要初始化时格式串匹配即可)
  • 自动处理跨年月的日期逻辑,无需手动计算月份天数、跨年等问题
  • 代码简洁易读,维护成本低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:45:35