datetime模块

datetime模块

前言:datetime模块一般用来对时间进行计算,比如现在的两小时后是什么时间,几年几月,2050年的3月1日的前一天是几月几日等等。

在正题开始之前我先让大家明白闰年和平年是怎么计算的。

  • 闰年:将年份除以4没有余数则为闰年,闰年的二月有29天
  • 平年:将年份除以4有余数则为平年,平年的二月有28天

搞清楚datetime模块需要清楚就需要知道datetime中的四大类

time:时间类
date:日期类
datetime:日期时间类
timedelta:时间变化类

1. time类

一般传入三个参数,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

2. 日期类

传入三个参数:年,月,日

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

日期类与时间类的方法类似,这里就不再演示

3. timedate类

一般传入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'>

4. timedelta类

首先我们先搞清楚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))

结语:时间就像海绵里的水,只要愿挤,总还是有的。——鲁迅

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值