本文主要是介绍python3日期时间运算_逐步学习python3(也适合小学生)第28章:Python日期时间模块,一步,Python3,适用,第二十八,篇,Pythondatetime,下...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这一篇我们继续来学习datetime模块中的timedelta类。
四、datetime.timedelta类
timedelta表示两个时间的间隔
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
参数默认值为0的,代表参数都可选。
from datetime import datetime
from datetime import timedelta
today = datetime.today()
print(today)
print(today + timedelta(days=1,hours=5))
print(today + timedelta(weeks=1))
运行结果:
2020-11-08 17:46:33.148467
2020-11-09 22:46:33.148467
2020-11-15 17:46:33.148467
datetime.timedelta()参数可选,weeks=1添加7天
from datetime import datetime,date
from datetime import timedelta
#获取上个月第一天和最后一天
today = datetime.today()
print(today)
mlast_day = date(today.year, today.month, 1) - timedelta(days=1)
mfirst_day = date(mlast_day.year, mlast_day.month,1)
print(mlast_day)
print(mfirst_day)
运行结果:
2020-11-08 18:01:13.606740
2020-10-31
2020-10-01
完美的求得了上一个月的第一天和最后一天。我们更改一下代码,看能不能求出2020-1-1前一个月的第一天和最后一天
获取上一个月第一天和最后一天
from datetime import datetime,date
from datetime import timedelta
#获取上个月第一天和最后一天
today = date(2020,1,1)
print(today)
mlast_day = date(today.year, today.month, 1) - timedelta(1)
mfirst_day = date(mlast_day.year, mlast_day.month,1)
print(mlast_day)
print(mfirst_day)
运行结果:
2020-01-01
2019-12-31
2019-12-01
非常有用的技巧,不要问我为什么,因为在一个项目中,用了错误的方法,写了好大一段代码
获取时间差
from datetime import datetime,timedelta
import time
start_time = datetime.now()
time.sleep(2)
end_time = datetime.now()
d_time = end_time - start_time
print(start_time)
print(end_time)
print(d_time)
print(d_time.microseconds)
print(d_time.seconds)
运行结果:
2020-11-08 18:17:19.424877
2020-11-08 18:17:21.425810
0:00:02.000933
933
2
由上可以看到,时间差能到微秒
from datetime import datetime,date
from datetime import timedelta
today = date.today()
print(today)
today_weekday = today.isoweekday()
print(today_weekday)
last_sunday = today - timedelta(days = today_weekday)
last_monday = last_sunday -timedelta(days=6)
print(last_sunday)
print(last_monday)
运行结果:
2020-11-08
7
2020-11-01
2020-10-26
计算指定日期当月最后一天的日期和本月天数
from datetime import datetime,date
from datetime import timedelta
date1 = date(2020,12,25)
date2 = date(2020,9,1)
def last_day_month(date_obj):
if date_obj.month == 12:
first_day_next_month = date(date_obj.year+1, 1, 1)
else:
first_day_next_month = date(date_obj.year, date_obj.month+1, 1)
last_day_this_month = first_day_next_month - timedelta(days=1)
return last_day_this_month
last_day_this_month = last_day_month(date1)
print(last_day_this_month)
print(last_day_this_month.day)
last_day_this_month = last_day_month(date2)
print(last_day_this_month)
print(last_day_this_month.day)
运行结果:
2020-12-31
31
2020-09-30
30
五、时间日期格式化strftime和strptime
strftime
根据区域设置格式化本地时间/日间,将时间格式化为表示时间的字符串str。这样在的项目显示端,可以有多种形式的时间日期样式,比如: 2020/11/8或者2020-11-8或者20-11-8等等。
datetime.strftime("%Y-%m-%d")
#显示的格式为:2020-11-8
strptime
按时物定的时间格式将字符串转化为时间类型
datetime.strptime(datetime_str,'%Y-%m-%d')
我们在转化时,都会用到时间日期格式化符号,如上面的%Y,%m,%d
下表为Python时间日期格式化符号:
符号
说明
%y
两位数的年份表示(00-99)
%Y
四位数的年份表示(000-9999)
%m
月份(01-12)
%d
月内中的一天(0-31)
%H
24小时制小时数(0-23)
%I
12小时制小时数(01-12)
%M
分钟数(00=59)
%S
秒(00-59)
%a
本地简化星期名称
%A
本地完整星期名称
%b
本地简化的月份名称
%B
本地完整的月份名称
%c
本地相应的日期表示和时间表示
%j
年内的一天(001-366)
%p
本地A.M.或P.M.的等价符
%U
一年中的星期数(00-53)星期天为星期的开始
%w
星期(0-6),星期天为星期的开始
%W
一年中的星期数(00-53)星期一为星期的开始
%x
本地相应的日期表示
%X
本地相应的时间表示
%Z
当前时区的名称
%%
%号本身
from datetime import datetime,date
date_str='2020-11-8'
date1 = datetime.strptime(date_str,'%Y-%m-%d')
print(date1)
print(type(date1))
运行结果:
2020-11-08 00:00:00
我们把date_str,字符串时间格式转换成了datetime.datetime格式
再看一个例子:
from datetime import datetime,date
date_str='2020-11-8'
date1 = datetime.strptime(date_str,'%Y/%m/%d')
print(date1)
print(type(date1))
直接报错了
由上述错误我们可知,date_str和‘%Y-%m-%d’格式必须一致才能转换
我们再来把datetime.datetime转换为时间字符串str
from datetime import datetime,date
today = datetime.today()
print(today)
print(today.strftime('%Y/%m/%d %H:%M-%S'))
print(today.strftime('%Y/%m/%d'))
print(today.strftime('%d %b %Y'))
print(today.strftime('%d %b %Y , %a'))
print(today.strftime('%d %B %Y , %A'))
运行结果:
2020-11-08 20:13:39.227386
2020/11/08 20:13-39
2020/11/08
08 Nov 2020
08 Nov 2020 , Sun
08 November 2020 , Sunday
由示例代码我们可以看出,日期时间格式datetime.datetime我们可以组合出各种日期时间格式的字符串
结束语:
至此,我们已经把datetime模块学完,非常重要的一个时间模块。多练练就好了。
更多Python知识请关注公从号:老树Python
这篇关于python3日期时间运算_逐步学习python3(也适合小学生)第28章:Python日期时间模块,一步,Python3,适用,第二十八,篇,Pythondatetime,下...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!