【1】根据当前月求上个月、下个月的最后一天
(1)求当前月最后一天
(2)求前一个月的最后一天
(3)求下一个月的最后一天
学习示例与应用实例,代码如下:
1 #!/usr/bin/python3
2 #-*- coding: utf-8 -*-
3
4 import datetime
5 import calendar
6
7 # 理论学习示例
8 print('理论学习示例')
9
10 time = datetime.date(2018, 12, 23) # 年,月,日
11
12 print('year : ' + str(time.year) + ' month : ' + str(time.month))
13
14 # 求当前月第一天
15 first_day = datetime.date(time.year, time.month, 1)
16 print ('当前月的第一天:' + str(first_day))
17
18 # 求当前月的最后一天
19 days_num = calendar.monthrange(first_day.year, first_day.month)[1] # 获取当前月有多少天
20 last_day_of_current_month = first_day + datetime.timedelta(days = days_num - 1) # 当前月的最后一天只需要days_num - 1 即可
21 print ('当前月最后一天:' + str(last_day_of_current_month))
22
23 # 求前一个月最后一天
24 pre_month = first_day - datetime.timedelta(days = 1) # timedelta是一个不错的函数
25 print ('前一个月最后一天:' + str(pre_month))
26
27 # 求前一个月的第一天
28 first_day_of_pre_month = datetime.date(pre_month.year, pre_month.month, 1)
29 print ('前一个月的第一天:' + str(first_day_of_pre_month))
30
31 # 求下个月的第一天
32 first_day_of_next_month = first_day + datetime.timedelta(days = days_num)
33 print ('下个月的第一天:' + str(first_day_of_next_month))
34
35 # 求下个月的最后一天
36 next_month_days = calendar.monthrange(first_day_of_next_month.year, first_day_of_next_month.month)[1] # 获取下个月有多少天
37 next_month = first_day_of_next_month + datetime.timedelta(days = next_month_days - 1)
38 print ('下个月最后一天:' + str(next_month))
39
40 print('\n')
41 # 应用实例
42
43 print('应用实例')
44
45 cycleid = "201912"
46
47 print('cycleid_year : ' + str(cycleid[0:4]) + ' cycleid_month : ' + str(cycleid[4:6]))
48
49 month = int(cycleid[4:6])
50 print("month : " + str(month))
51
52 first_day_of_current_cycleid = datetime.date(int(cycleid[0:4]), int(cycleid[4:6]), 1)
53 print("first_day : " + str(first_day_of_current_cycleid))
54
55 def getNextCycleidFirstDay() :
56 first_day_of_current_cycleid = datetime.date(int(cycleid[0:4]), int(cycleid[4:6]), 1)
57 days_num = calendar.monthrange(first_day_of_current_cycleid.year, first_day_of_current_cycleid.month)[1]
58 first_day_of_next_cycleid = first_day_of_current_cycleid + datetime.timedelta(days = days_num)
59 return first_day_of_current_cycleid, first_day_of_next_cycleid
60
61 current_fd, next_fd = getNextCycleidFirstDay()
62 print("current_fd : " + str(current_fd) + " next_fd : " + str(next_fd))
63
64 '''
65 理论学习示例
66 year : 2018 month : 12
67 当前月的第一天:2018-12-01
68 当前月最后一天:2018-12-31
69 前一个月最后一天:2018-11-30
70 前一个月的第一天:2018-11-01
71 下个月的第一天:2019-01-01
72 下个月最后一天:2019-01-31
73
74
75 应用实例
76 cycleid_year : 2019 cycleid_month : 12
77 month : 12
78 first_day : 2019-12-01
79 current_fd : 2019-12-01 next_fd : 2020-01-01
80 '''
Good Good Study, Day Day Up.
顺序 选择 循环 总结