python - Python 中的更新日期

标签 python

所以这是我的问题,我正在尝试做一个小程序,为用户提供下一个必须支付租金的日期。

这是我的代码:

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/

相关文章:

python - Flask Azure Web 应用程序部署成功但显示默认页面

Python:如何将 { apple: "1", orange: "2"} 解析为字典?

python - 从 pandas 数据帧转换后修改 numpy 数组

python - 如何以 D3.js 风格填充邻接矩阵单元?

python - GRU 和 RNN 实现之间的不一致

categorical-data - 指定 patsy/statsmodels 生成的类别的名称形式 'C'

python - OpenCV 打开文件错误(Assertion failed)

python - 将任何 JSON 转换为名称/值对

python - Pytest 断言错误问题

python - Django allauth 自定义模板不散列密码