日期获取 (python)

import os
import shutil
import random
from time import strftime, localtime
import datetime
import math
import calendar

def getdays(n): # 该函数是N天前或后返回的值
a = datetime.date.today()
if n < 0:
n = abs(n)
b = datetime.timedelta(days=n)
d = a - b
else:
b = datetime.timedelta(days=n)
d = a + b
return d
def getmonths(n): # 该函数是N月前或后返回的值

year = int(strftime("%Y", localtime()))
mon = int(strftime("%m", localtime()))
day = int(strftime("%d", localtime()))
if n < 0:
n = abs(n)
if n > 12:
a = math.floor(n / 12)
year1 = year - a
b = n - a * 12
if b < mon:
aa = mon
mon1 = aa - b
f = calendar.monthrange(year1, mon1)[1]
if day >= f:
day = f
elif b == mon:
year1 = year1 - 1
mon1 = 12
f = calendar.monthrange(year1, mon1)[1]
if day >= f:
day = f
elif b > mon:
year1 = year1 - 1
aa = mon
mon1 = 12 - (b - aa)
f = calendar.monthrange(year1, mon1)[1]
if day >= f:
day = f
elif n == 12:
year1=year-1
mon1=mon
else:
year1=year
if n<mon:
aa=mon
mon1=aa-n
f=calendar.monthrange(year1,mon1)[1]
if day>=f:
day=f
elif n==mon:
year1=year-1
mon1=12
f=calendar.monthrange(year1,mon1)[1]
if day>=f:
day=f
elif n>mon:
year1=year-1
mon1=12-(n-mon)
f=calendar.monthrange(year1,mon1)[1]
if day>=f:
day=f
elif n==0:
year1=year
mon1=mon
else:
if n > 12:
a = math.floor(n / 12)
year1 = year + a
b = n - a * 12
if b <12- mon:
aa = mon
mon1 = aa + b
f = calendar.monthrange(year1, mon1)[1]
if day >= f:
day = f
elif b == 12-mon:
year1 = year1 + 1
mon1 = 1
f = calendar.monthrange(year1, mon1)[1]
if day >= f:
day = f
elif b > 12-mon:
year1 = year1 + 1
aa = mon
mon1 = aa + (b - aa)
f = calendar.monthrange(year1, mon1)[1]
if day >= f:
day = f
elif n == 12:
year1=year+1
mon1=mon
else:
year1=year
if n<12-mon:
aa=mon
mon1=aa+n
f=calendar.monthrange(year1,mon1)[1]
if day>=f:
day=f
elif n==12-mon:
year1=year+1
mon1=1
f=calendar.monthrange(year1,mon1)[1]
if day>=f:
day=f
elif n>12-mon:
year1=year+1
mon1=aa+(n-mon)
f=calendar.monthrange(year1,mon1)[1]
if day>=f:
day=f

date=(str(year1),str(mon1),str(day))
date1="-".join(date)
return date1

print("\t\t日期前后N天或N月的获取(循环30次)\n\n\n")
for i in range(30):
a=input("\n\n天数移动,输入‘T’,月数移动,输入‘M’ : ")
if a=='T':
b = input("\n请输入调整天数(负数前移,正数后移) : ")
b=int(b)
f=getdays(b)
print("\n")
print(f)
elif a=='M':
b = input("\n请输入调整月数(负数前移,正数后移) : ")
b=int(b)
f=getmonths(b)
print("\n")
print(f)
else:
print("\n\n输入不正确,已退出")
break

猜你喜欢

转载自www.cnblogs.com/tangjunjun/p/10908943.html