我是靠谱客的博主 拼搏机器猫,这篇文章主要介绍python的datetime.date日期计算——计算当月第一天、当月最后一天、前月第一天、前月最后一天、次月第一天、次月最后一天、去年的当天日期等,现在分享给大家,希望可以做个参考。
一、各种日期计算方法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56# -*- coding: utf-8 -*- import datetime import calendar # 1.初始化一个datetime.date类型的日期,多种方式 # init_date = datetime.date(2008, 1, 3) # <class 'datetime.date'> init_date = datetime.date.today() print('当前给定时间:', init_date) # 2.计算给定时间的前一天 pre_date = init_date - datetime.timedelta(days=1) print("给定时间的前一天:", pre_date) # 3.计算给定时间的后一天 next_date = init_date + datetime.timedelta(days=1) print("给定时间的后一天:", next_date) # 4.计算给定时间的当月第一天 current_month_first_day = datetime.date(year=init_date.year, month=init_date.month, day=1) print("给定时间的当月第一天:", current_month_first_day) # 5.计算给定时间当月最后一天 # print(calendar.monthrange(2019, 10)) # (1,31)返回两个整数组成的元组,第一个是该月的第一天是星期几(按照星期一为0计算),第二个是该月的天数 current_month_last_day = datetime.date(init_date.year, init_date.month, calendar.monthrange(init_date.year, init_date.month)[1]) print("当月最后一天:",current_month_last_day) # 6.计算给定时间的次月第一天 # 先计算当月有几天,再用当月第一天+时间间隔(间隔为:当月天数) days_num = calendar.monthrange(init_date.year, init_date.month)[1] first_day_of_next_month = current_month_first_day + datetime.timedelta(days=days_num) print("给定时间的次月第一天:", first_day_of_next_month) # 7.计算给定时间后一个月的最后一天 # 先计算次月一共多少天 days_num_of_next_month = calendar.monthrange(first_day_of_next_month.year, first_day_of_next_month.month)[1] last_day_of_next_month = datetime.date(first_day_of_next_month.year, first_day_of_next_month.month, days_num_of_next_month) print("给定时间的次月最后一天:", last_day_of_next_month) # 8.计算前一个月的最后一天 # 前一个月最后一天 = 当月第一天-时间间隔1 last_day_of_pre_month = current_month_first_day - datetime.timedelta(days=1) print("给定时间前月最后一天:", last_day_of_pre_month) # 9.计算前一个月第一天 first_day_of_pre_month = datetime.date(last_day_of_pre_month.year, last_day_of_pre_month.month, 1) print("给定时间前一个月的第一天:", first_day_of_pre_month) # 10.计算给定日期去年的当天 # 计算当年第一天,减1天的时间将就是去年最后一天 first_day_of_this_year = datetime.date(init_date.year, 1, 1) last_day_of_last_year = first_day_of_this_year - datetime.timedelta(days=1) same_day_of_last_year = datetime.date(last_day_of_last_year.year, init_date.month, init_date.day) # 去年同月第一天 print("去年的当天:", same_day_of_last_year) # 11.datetime.date格式转为字符串格式 date_str = init_date.strftime("%Y-%m-%d") print("字符串格式的日期:", date_str, type(date_str)) # <class 'str'> # 12.字符串转日期date格式 str1 = '2019-10-11' date1 = datetime.datetime.strptime(str1, "%Y-%m-%d").date() print("字符串转日期格式:", date1, type(date1)) # <class 'datetime.date'>
二、总结:
1.不要直接使用年、月的加减。即以下写法错误!!!
复制代码
1
2
3
4date_test = datetime.date(today.year-1,today.month-1,today.day-1) # 错误方式
2.当前日期前几天、后几天,可以使用时间间隔加减。例如
复制代码
1
2
3
4
5today = datetime.date(2019, 2, 27) three_days_later = today + datetime.timedelta(days=3) print(three_days_later) # 2019-03-02
3.计算某指定年月的月天数,使用calendar模块的monthrange方法。用法如下:
复制代码
1
2
3print(calendar.monthrange(2019, 10)) # (1,31)
返回两个整数组成的元组,第一个是该月的第一天是星期几(按照星期一为0计算),第二个是该月的天数。
最后
以上就是拼搏机器猫最近收集整理的关于python的datetime.date日期计算——计算当月第一天、当月最后一天、前月第一天、前月最后一天、次月第一天、次月最后一天、去年的当天日期等的全部内容,更多相关python内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复