一、简述
我们在写代码的过程经常遇到时间模块,如果我们以后需要根据时间去筛选信息的话,那用户会更大,所以今天就来讲讲时间的两大模块:time & datetime
二、time模块
1、time.process_time()
功能:测量处理器的运算时间,但是不包括sleep时间
>>> import time >>> time.process_time() 0.171875 >>>
2、time.altzone()
功能:返回与utc的时间的时间差,以秒计算
>>> import time >>> time.altzone -32400 >>> time.altzone / 3600 -9.0 >>>
3、time.asctime()
功能:返回时间格式:'Thu Mar 30 16:47:39 2017'(星期 月 日 时间 年)
>>> import time >>> time.asctime() 'Wed Mar 27 23:41:28 2019' >>>
4、time.localtime()
功能:返回本地时间的struct _time的格式的对象,也可以把时间戳转换成成struct _time的格式的对象
>>> import time >>> t = time.localtime() >>> t time.struct_time(tm_year=2019, tm_mon=3, tm_mday=27, tm_hour=23, tm_min=42, tm_sec=20, tm_wday=2, tm_yday=86, tm_isdst=0) >>> t.tm_hour 23 >>>
5、time.time()
功能:返回当前时间的时间戳(1970年纪元后经过的浮点秒数)
>>> import time >>> time.time() 1553701394.1449068 >>> time.localtime(time.time()) time.struct_time(tm_year=2019, tm_mon=3, tm_mday=27, tm_hour=23, tm_min=43, tm_sec=22, tm_wday=2, tm_yday=86, tm_isdst=0) # 给当前时间加上3个小时,注意了,localtime中只能介绍秒级别的,所以是3600*3表示3个小时 >>> time.localtime(time.time() + 3600*3) time.struct_time(tm_year=2019, tm_mon=3, tm_mday=28, tm_hour=2, tm_min=43, tm_sec=39, tm_wday=3, tm_yday=87, tm_isdst=0) #跟asctime结合起来用 生成当前时间格式 >>> time.asctime( time.localtime( time.time() ) ) 'Wed Mar 27 23:43:47 2019' >>>
注:为啥是1970年呢?因为1970年1月1日被当做unix操作系统的诞生元年。
6.time.gmtime()
功能:返回当前utc时间(伦敦时间)
>>> import time >>> time.gmtime() # 返回utc的时间struct time 格式 time.struct_time(tm_year=2019, tm_mon=3, tm_mday=27, tm_hour=15, tm_min=45, tm_sec=27, tm_wday=2, tm_yday=86, tm_isdst=0) >>> time.asctime(time.gmtime()) # 伦敦时间 'Wed Mar 27 15:45:36 2019' >>> time.asctime(time.localtime()) # 北京时间,两者正好相差8个小时 'Wed Mar 27 23:45:43 2019' >>>
7、time.strptime()
功能:把时间格式的字符串转成struct_time格式的时间对象
>>> import time >>> time.strptime("2019-03-27 23:50","%Y-%m-%d %H:%M") time.struct_time(tm_year=2019, tm_mon=3, tm_mday=27, tm_hour=23, tm_min=50, tm_sec=0, tm_wday=2, tm_yday=86, tm_isdst=-1) >>>
8、time.mktime()
功能:把struct_time时间对象转成时间戳
>>> import time >>> t = time.strptime("2019-03-27 23:50","%Y-%m-%d %H:%M") >>> t2_stamp = time.mktime(t) >>> t2_stamp 1553701800.0 >>>
9、time.strftime()
功能:struct_time时间对象转换成时间字符串
>>> import time >>> t = time.strptime("2019-03-27 23:50","%Y-%m-%d %H:%M") >>> m = time.strftime("%Y-%m-%d-%H-%M.log",t) >>> m '2019-03-27-23-50.log' >>> m = time.strftime("%Y-%m-%d-%H-%M.log") >>> m '2019-03-27-23-49.log' >>>
三、时间格式转换
1、转换表格
2、时间格式转换关系图
四、datetime模块
1、datetime.datetime.now()
功能:返回当前时间,格式如:2019-03-27 23:51:46.470982
>>> import datetime >>> print(datetime.datetime.now()) 2019-03-27 23:51:46.470982 >>>
2、datetime.date.fromtimestamp()
功能:时间戳转换为日期格式
>>> import datetime, time >>> t = datetime.date.fromtimestamp(time.time()) >>> print(t) 2019-03-27 >>>
3、datetime.timedelta()
功能:对某个时间的加减
import datetime t1 = datetime.datetime.now() + datetime.timedelta(days=3) # 当前时间加3天 print(t1) # 2019-03-30 23:54:12.276922 t2 = datetime.datetime.now() - datetime.timedelta(days=3) # 当前时间减3天 print(t2) # 2019-03-24 23:55:11.134536 t3 = datetime.datetime.now() + datetime.timedelta(days=-3) # 当前时间减3天 print(t3) # 2019-03-24 23:56:05.031826 t4 = datetime.datetime.now() + datetime.timedelta(hours=3) # 当前时间加3个小时 print(t4) # 2019-03-28 02:56:46.670753 t5 = datetime.datetime.now() + datetime.timedelta(minutes=30) # 当前时间加30分钟 print(t5) # 2019-03-28 00:27:18.182722
4、时间替换
>>> import datetime >>> c_time = datetime.datetime.now() >>> print(c_time) 2019-03-27 23:59:51.528180 >>> update_c_time = c_time.replace(minute=3,hour=2) # 时间替换 >>> print(update_c_time) 2019-03-27 02:03:51.528180 >>>