所以这是我的问题,我正在尝试做一个小程序,为用户提供下一个必须支付租金的日期。
这是我的代码:
curdate = datetime.date(2015, 01, 01)
rent_date = datetime.date(curdate.year, curdate.month+1, 01)
one_day = datetime.timedelta(days = 1)
one_week = datetime.timedelta(weeks = 1)
one_month = datetime.timedelta(weeks = 4)
def rent_date_calc(cd, rd):
if cd.month == 12:
rd.replace(cd.year+1, 01, 01)
else:
rd.replace(cd.year, cd.month+1, 01)
def time_pass(rd, cd, a, al):
if rd < cd:
for a in al:
a.finances -= a.rent
move_fwd = raw_input("Would you like to move forward one day(1), one week (2) or one month (3)?")
if move_fwd == "1":
curdate += one_day
elif move_fwd == "2":
curdate += one_week
else:
curdate += one_month
time_pass(rent_date, curdate, prodcomp, prodcomps)
rent_date_calc(curdate, rent_date)
print "Rent date: " + str(rent_date)
我遇到的问题是rent_date始终保持不变(2015-02-01) 知道为什么吗?
最佳答案
您的代码不会改变任何内容,因为日期时间是一个不可变的对象,当您对其调用替换时,它会返回一个新的日期时间,而不是修改第一个日期时间。
您应该从函数返回
新对象并将其分配
回rent_date
:
def rent_date_calc(cd, rd):
if cd.month == 12:
return rd.replace(cd.year+1, 01, 01)
else:
return rd.replace(cd.year, cd.month+1, 01)
...
rent_date = rent_date_calc(curdate, rent_date)
关于python - Python 中的更新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38742028/