前言:datetime模块一般用来对时间进行计算,比如现在的两小时后是什么时间,几年几月,2050年的3月1日的前一天是几月几日等等。
在正题开始之前我先让大家明白闰年和平年是怎么计算的。
搞清楚datetime模块需要清楚就需要知道datetime中的四大类
time:时间类
date:日期类
datetime:日期时间类
timedelta:时间变化类
一般传入三个参数,hour小时,minute分钟,second秒,还有microsecond微秒,但一般不传入。
datetime.time(hour, minute, second)
hour = datetime.time(hour=10, minute=20, second=40)
print(type(hour))
print(hour)
结果
<class 'datetime.time'> # 说明我们实例化了一个datetime.time类
10:20:40
查看这个类具有哪些方法和属性
time = datetime.time(hour=10, minute=20, second=40)
print(time)
# 格式化时间对象 str类型
print(time.strftime('%H|%M|%S'))
# 小时 int类型
print(time.hour)
# 分钟 int类型
print(time.minute)
# 秒 int类型
print(time.second)
结果
10:20:40
10|20|40
10
20
40
传入三个参数:年,月,日
datetime.date(year, month, day)
date = datetime.date(year=2020, month=12, day=20)
print(type(date))
print(date)
结果
<class 'datetime.date'> # 实例化一个date对象
2020-12-20
日期类与时间类的方法类似,这里就不再演示
一般传入6个参数,年,月,日,时,分,秒
datetime.datetime(year, month, day, hour, minute, second)
date_time = datetime.datetime(2000, 7, 4, 20, 30, 30)
print(type(date_time))
print(date_time)
结果
<class 'datetime.datetime'> # 实例化一个datetime对象
2000-07-04 20:30:30
具有的属性和方法
date_time = datetime.datetime(2000, 7, 4, 20, 30, 30)
print(date_time.replace(year=2010, day=3)) # 替换时间日期
date = date_time.date() # 获取日期对象,与上面的日期对象一样
print(type(date))
time = date_time.time() # 获取时间对象,与上面的时间对象一样
print(type(time))
结果
2010-07-03 20:30:30
<class 'datetime.date'>
<class 'datetime.time'>
首先我们先搞清楚delta Δ是什么意思,假设我们从一个地方出发,起始时间为t1,终点时间为t2,那么我们花费的时间就为t2-t1,我们就可以表示为Δt,此时的delta就代表两个时间段的差值,也就是时间变化量。datetime模块主要是用来计算时间的,所以也有这个概念。
注意:timedelta只能与date类,datetime类还有本身进行计算,且不能传入年份,月份
一般传入四个参数:日,时,分,秒用来计算
与本身进行计算
delta1 = datetime.timedelta(days=2, hours=8, minutes=30, seconds=20)
delta2 = datetime.timedelta(days=1, hours=4)
print(delta1-delta2)
结果
1 day, 4:30:20
与date类进行计算
delta1 = datetime.timedelta(days=2, hours=8, minutes=30, seconds=20)
date = datetime.date(year=2020, month=7, day=6)
print(type(date-delta1))
print(date-delta1)
结果
<class 'datetime.date'> # date类型与delta相减结果仍是date类型
2020-07-04
与datetime类进行计算
delta1 = datetime.timedelta(days=2, hours=8, minutes=30, seconds=20)
date_time = datetime.datetime(year=2020, month=7, day=4)
print(type(date_time-delta1))
print(date_time-delta1)
结果
<class 'datetime.datetime'> # 仍是datetime.datetime类型
2020-07-01 15:29:40
介绍完这几个大类后我们来做一个练习,使用datetime模块来计算用户输入的的年份是平年还是闰年
思路:我们可以先创建一个date类或者datetime类,传入用户输入的年份,month=3, days=1,第二步创建一个timedelta类,传入参数 days=1,然后用创建的类减去timedelta类即可或者二月份的最后一天,如果是29则为闰年,为28则为平年。
year = int(input('请输入年份:'))
t = datetime.datetime(year=year, month=3, day=1)
td = datetime.timedelta(days=1)
res = t - td
if res.day == 29:
print('{}年是闰年'.format(year))
elif res.day == 28:
print('{}年是平年'.format(year))
结语:时间就像海绵里的水,只要愿挤,总还是有的。——鲁迅