Python中datetime对象调用replace修改分钟值不生效怎么解决
问题原因
Python的datetime是不可变对象,replace()方法不会修改原对象,只会返回修改后的新对象。你的代码中所有条件分支内的replace调用都没有将返回值重新赋值给time变量,因此修改结果没有被保留,输出自然还是原来的时间。
修正后的代码
from datetime import datetime time = datetime.now() time = time.replace(second=0, microsecond=0) if time.minute in [0, 1, 2]: time = time.replace(minute=0) elif time.minute in [15, 16, 17]: time = time.replace(minute=15) elif time.minute in [30, 31, 32]: time = time.replace(minute=30) elif time.minute in [45, 46, 47]: time = time.replace(minute=45) elif time.minute < 15: time = time.replace(minute=15) elif time.minute < 30: time = time.replace(minute=30) elif time.minute < 45: time = time.replace(minute=45) elif time.minute < 59: # 分钟切换到0点需要同步增加小时,避免时间逻辑错误 time = time.replace(minute=0, hour=time.hour + 1)
额外说明
原代码最后一个分支仅将分钟设为0、未调整小时,会出现14:58修改后变成14:00的逻辑问题,上述修正代码已经补充了小时+1的处理逻辑。
内容的提问来源于stack exchange,提问作者rockford3122
相关产品推荐
相关产品推荐

