from datetime import datetime,timedelta
from dateutil.relativedelta import relativedelta
# 获得当前时间
now_time = datetime.now()
print(now_time, "当前时间")
# 方法一
def change_time(time_str, days=0, hours=0, minutes=0):
if type(time_str) == str:
time_str = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
ret = time_str + timedelta(days=days, hours=hours, minutes=minutes)
return ret
# 7天后
ret1 = change_time(now_time, days=7)
print(ret1, "7天后")
# 方法二
def delay_time(time_str, years=0, months=0, days=0, hours=0, minutes=0, seconds=0):
if type(time_str) == str:
time_str = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
ret = time_str + relativedelta(years=years, months=months, days=days, hours=hours, minutes=minutes, seconds=seconds)
return ret
# 1个月前
ret2 = delay_time(now_time, months=-1)
print(ret2, '一个月前')
# 注意: relativedelta 还有一种用法
ret3 = now_time + relativedelta(day=10) # 注意这里是day, 上边是days
print(ret3) # 此时获得的时间是10号的, 也就是上边的day是几他就是几号,
# 有意思的是, 你是平年2月传一个31, 得到的结果是28