【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)

 

posted @ 2017-09-07 17:23  杨浪  阅读(3056)  评论(0编辑  收藏  举报