20.5 Time模块
import time
time.sleep(3) #代码执行暂停3s
t=time.ctime() #当前系统时间
print(t)
# Fri Oct 20 12:24:28 2017
t=time.time() #当前系统时间戳
print(t)
# 1508473468.7305713
print(time.gmtime()) #返回一个struct_time时间对象,可以分别调用时间的各个组成部分.utc时间
# time.struct_time(tm_year=2017, tm_mon=10, tm_mday=20, tm_hour=4, tm_min=13, tm_sec=14, tm_wday=4, tm_yday=293, tm_isdst=0)
r=time.gmtime()
print(r.tm_year)
# 2017
print(time.localtime()) #返回本地当前时间的struct_time对象(时间元组)
#time.struct_time(tm_year=2021, tm_mon=8, tm_mday=7, tm_hour=21, tm_min=23, tm_sec=22, tm_wday=5, tm_yday=219, tm_isdst=0)

t1 = (2020, 9, 23, 16, 0, 0, 0, 0, 0)
t=time.mktime(t1) #生成时间戳
# 1600848000.0
t2=time.localtime() #时间元组
print(time.mktime(t2)) #时间对象struct_time转换为时间戳
# 1508483326.0
t1=time.time()
print(time.ctime(t1)) #时间戳转换为字符串
# Fri Oct 20 15:08:46 2017
print(time.strptime("2016/05/22","%Y/%m/%d")) #字符串转时间对象
# time.struct_time(tm_year=2016, tm_mon=5, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=143, tm_isdst=-1)
相比于time模块,datetime模块的接口则更直观、更容易调用
datetime模块定义了下面这几个类:
- datetime.date:表示日期的类。常用的属性有year, month, day;
- datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
- datetime.datetime:表示日期时间。
- datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
- datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)
我们需要记住的方法仅以下几个:
- d=datetime.datetime.now() 返回当前的datetime日期类型
d.timestamp(),d.today(), d.year,d.timetuple()等方法可以调用
datetime.date.fromtimestamp(322222) 把一个时间戳转为datetime日期类型
时间运算
>>> datetime.datetime.now()
datetime.datetime(2017, 10, 1, 12, 53, 11, 821218)
>>> datetime.datetime.now() + datetime.timedelta(4) #当前时间 +4天
datetime.datetime(2017, 10, 5, 12, 53, 35, 276589)
>>> datetime.datetime.now() + datetime.timedelta(hours=4) #当前时间+4小时
datetime.datetime(2017, 10, 1, 16, 53, 42, 876275)
4.时间替换
>>> d.replace(year=2999,month=11,day=30)
datetime.date(2999, 11, 30)