datetime模块简介
datetime模块是python自带的模块,在蓝桥杯比赛中可以直接调用,datetime模块提供了操作日期和时间功能, 该模块提供了五种核心对象:datetime(时间日期类型), date(日期类型), time(时间类型), tzinfo(时区类型), timedelta(时间差类型).
datetime 对象
datetime对象可以用来表示精确的日期和时间,其实例化方法如下
import datetime
today = datetime.datetime(year=2022,month = 9,day=21)
print(today)
print(today.year) #返回datetime对象中年份
print(today.month) #返回datetime对象中月份
print(today.day) #返回datetime对象中天
print(today.now()) # 返回当前时间
运行结果
在实例化datetime对象时,year, month, day是必填项,hour, minute, second, microsecond(微秒), tzinfo(时区)是可选项。
date对象
date对象和datetime对象的区别在于,date对象只能表示日期,不能表示时间(即其精确度为天)。date实例化时须要且仅须要三个参数:year, month, day。date对象是没有时区(tzinfo)属性的。
import datetime
today = datetime.date(year=2022,month = 9,day=21)
print(today)
print(today.year) #返回datetime对象中年份
print(today.month) #返回datetime对象中月份
print(today.day) #返回datetime对象中天
#print(today.now()) # 返回当前时间(没有这个属性)
time对象
和date对象相反,time对象只能用来表示时间,而不能用来表示日期。time对象所表示的时间可以精确到微秒,而且可以具有时区(tzinfo)属性。
import datetime
now_time = datetime.time(hour=16, minute=9, second=10) # hours, minute, second,microsecond, tzinfo都是可选参数
print(now_time)
print(now_time.hour)
运行结果
这里要注意,python中还有另外一个模块我们经常用到的模块:time,这个模块也含有用来表示时间、日期对象的函数,但因为该模块下的函数都是对同名C函数的直接调用,所以返回的对象都不太pythonic,所以我们一般不用,经常使用的就两个函数:time.sleep(), time.time()
time.sleep()和time.time()的使用如下
import time
print(time.time()) #返回当前时间戳
time.sleep(8) #程序进入睡眠8s
运行结果
timedelta对象
timedelta对象表示一个时间段,timedelta对象可以通过手动实例化得到,也可以通过上述三个对象(datetime, date, time)相减得到。
from datetime import datetime,timedelta
now = datetime.now()
last = datetime(year=2022,month=9,day=21,hour=16,minute=23)
delta = now - last
print(delta)
if delta + last == now:
print('yes')
else:
print('on')
#直接实例化timedelta
delta2 = timedelta(days=2)
date2 = now - delta2
print(date2)
运行结果
手动实例化timedelta时,可以传入的参数有:days, seconds, microseconds, milliseconds, minutes, hours, weeks。
tzinfo对象一般用不到就不解释了