【python】python获取当前日期前后N天或N月的日期
1 # -*- coding: utf-8 -*- 2 3 '''获取当前日期前后N天或N月的日期''' 4 5 from time import strftime, localtime 6 from datetime import timedelta, date 7 import calendar 8 9 year = strftime("%Y",localtime()) 10 mon = strftime("%m",localtime()) 11 day = strftime("%d",localtime()) 12 hour = strftime("%H",localtime()) 13 min = strftime("%M",localtime()) 14 sec = strftime("%S",localtime()) 15 16 def today(): 17 ''''' 18 get today,date format="YYYY-MM-DD" 19 ''''' 20 return date.today() 21 22 def todaystr(): 23 ''' 24 get date string, date format="YYYYMMDD" 25 ''' 26 return year+mon+day 27 28 def datetime(): 29 ''''' 30 get datetime,format="YYYY-MM-DD HH:MM:SS" 31 ''' 32 return strftime("%Y-%m-%d %H:%M:%S",localtime()) 33 34 def datetimestr(): 35 ''''' 36 get datetime string 37 date format="YYYYMMDDHHMMSS" 38 ''' 39 return year+mon+day+hour+min+sec 40 41 def get_day_of_day(n=0): 42 ''''' 43 if n>=0,date is larger than today 44 if n<0,date is less than today 45 date format = "YYYY-MM-DD" 46 ''' 47 if(n<0): 48 n = abs(n) 49 return date.today()-timedelta(days=n) 50 else: 51 return date.today()+timedelta(days=n) 52 53 def get_days_of_month(year,mon): 54 ''''' 55 get days of month 56 ''' 57 return calendar.monthrange(year, mon)[1] 58 59 def get_firstday_of_month(year,mon): 60 ''''' 61 get the first day of month 62 date format = "YYYY-MM-DD" 63 ''' 64 days="01" 65 if(int(mon)<10): 66 mon = "0"+str(int(mon)) 67 arr = (year,mon,days) 68 return "-".join("%s" %i for i in arr) 69 70 def get_lastday_of_month(year,mon): 71 ''''' 72 get the last day of month 73 date format = "YYYY-MM-DD" 74 ''' 75 days=calendar.monthrange(year, mon)[1] 76 mon = addzero(mon) 77 arr = (year,mon,days) 78 return "-".join("%s" %i for i in arr) 79 80 def get_firstday_month(n=0): 81 ''''' 82 get the first day of month from today 83 n is how many months 84 ''' 85 (y,m,d) = getyearandmonth(n) 86 d = "01" 87 arr = (y,m,d) 88 return "-".join("%s" %i for i in arr) 89 90 def get_lastday_month(n=0): 91 ''''' 92 get the last day of month from today 93 n is how many months 94 ''' 95 return "-".join("%s" %i for i in getyearandmonth(n)) 96 97 def getyearandmonth(n=0): 98 ''''' 99 get the year,month,days from today 100 befor or after n months 101 ''' 102 thisyear = int(year) 103 thismon = int(mon) 104 totalmon = thismon+n 105 if(n>=0): 106 if(totalmon<=12): 107 days = str(get_days_of_month(thisyear,totalmon)) 108 totalmon = addzero(totalmon) 109 return (year,totalmon,days) 110 else: 111 i = totalmon/12 112 j = totalmon%12 113 if(j==0): 114 i-=1 115 j=12 116 thisyear += i 117 days = str(get_days_of_month(thisyear,j)) 118 j = addzero(j) 119 return (str(thisyear),str(j),days) 120 else: 121 if((totalmon>0) and (totalmon<12)): 122 days = str(get_days_of_month(thisyear,totalmon)) 123 totalmon = addzero(totalmon) 124 return (year,totalmon,days) 125 else: 126 i = totalmon/12 127 j = totalmon%12 128 if(j==0): 129 i-=1 130 j=12 131 thisyear +=i 132 days = str(get_days_of_month(thisyear,j)) 133 j = addzero(j) 134 return (str(thisyear),str(j),days) 135 136 def addzero(n): 137 ''''' 138 add 0 before 0-9 139 return 01-09 140 ''' 141 nabs = abs(int(n)) 142 if(nabs<10): 143 return "0"+str(nabs) 144 else: 145 return nabs 146 147 def get_today_month(n=0): 148 ''''' 149 获取当前日期前后N月的日期 150 if n>0, 获取当前日期前N月的日期 151 if n<0, 获取当前日期后N月的日期 152 date format = "YYYY-MM-DD" 153 ''' 154 (y,m,d) = getyearandmonth(n) 155 arr=(y,m,d) 156 if(int(day)<int(d)): 157 arr = (y,m,day) 158 return "-".join("%s" %i for i in arr) 159 160 161 if __name__=="__main__": 162 print today() 163 print todaystr() 164 print datetime() 165 print datetimestr() 166 print get_day_of_day(20) 167 print get_day_of_day(-3) 168 print get_today_month(-3) 169 print get_today_month(3)