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)