1. time模块:
UTC:世界协调时间:格林尼治天文时间,世界标准时间,中国来说是UTC + 8。
DST:夏令时:是一种节约能源而人为规定时间制度,在夏季调快1个小时。
时间的表示形式:
1.时间戳
以整型或浮点型表示时间的一个以秒为单位的时间间隔。这个时间间隔的基础值是从1970年1月1号01秒开始算起。
2.元组
一种Python的数据结构表示,这个元组有9个整型内容:
year
month
day
hours
minutes
seconds
weekday
julia day
flag(1或-1或0):0表示正常格式,1表示夏令时,-1根据当前日期自己判断。
3.格式化字符串
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%f 毫秒(000000-999999)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
举例1:返回当前时间的时间戳,浮点数形式:
# 返回当前时间的时间戳,浮点数形式 c = time.time() print(c) # 返回值:1557662207.2357445
举例2:将时间戳转为UTC时间元组(格林尼治时间)
# 将时间戳转为UTC时间元组(格林尼治时间) t = time.gmtime() # 全称:Greenwich Mean time print(t) # 返回值: # time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12, # tm_hour=11, tm_min=57, tm_sec=12, tm_wday=6, tm_yday=132, tm_isdst=0)
举例3:将时间戳转为本地时间元组
# 将时间戳转为本地时间元组 beijingTime = time.localtime() print(beijingTime) # 返回值: # time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12, # tm_hour=19, tm_min=57, tm_sec=45, tm_wday=6, tm_yday=132, tm_isdst=0)
举例4:将本地时间元素转换为时间戳
# 将本地时间元组转换为时间戳 beijingTime = time.localtime() m = time.mktime(beijingTime) print(m) # 返回值:1557662408.0
举例5:将本地时间转换为字符串
# 将时间元组转换成字符串 beijingTime = time.localtime() s = time.asctime(beijingTime) print(s) # 返回值: # Sun May 12 20:00:58 2019
举例6:
# 将时间戳转为字符串 c = time.time() p = time.ctime(c) print(p) # 返回值: # Sun May 12 20:01:40 2019
举例7:将时间元组转成给定格式的字符串,本地时间不写就是当前时间,也可以写成其他时间。
# 将时间元组转换成给定格式的字符串,本地时间不写就是当前时间,也可以写成其他时间, # 参数二为时间元组 beijingTime = time.localtime() q = time.strftime("%Y-%m-%d %H:%M:%S",beijingTime) print(beijingTime) print(q) print(type(q)) #转换成字符串类型 # 返回值 # time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12, tm_hour=20, # tm_min=3, tm_sec=1, tm_wday=6, tm_yday=132, tm_isdst=0) # 2019-05-12 20:03:01 # <class 'str'>
举例8:将时间字符串转换成元组:
# 将时间字符串转换成时间元组 beijingTime = time.localtime() q = time.strftime("%Y-%m-%d %H:%M:%S",beijingTime) w = time.strptime(q,"%Y-%m-%d %H:%M:%S") print(w)
其实上面说的挺乱,就是字符串、元组、时间戳来回转换,我们用一张图表来详细的说明这些函数方法的关系
举例9:时钟、沉睡类型方法,不过Python3.8对于sleep这个函数要被弃用,改成time.perf_counter这个方法
# 延迟一个时间,整型或浮点型 time.sleep(4) # 返回当程序的CPU执行时间 # UNIX始终返回全部的运行时间 # WINDOW从第二次开始,都是以第一次调用此函数的开始时间戳作为基数 # python 3.8 这个函数将要被弃用 # 换成time.perf_counter()这个函数 # 这个可以做电脑的性能测试,表示CPU处理速度快慢 y1 = time.clock() print(y1) time.sleep(2) y2 = time.clock() print(y2) time.sleep(2) y3 = time.clock() print("%d",y3) y1 = time.perf_counter() print("%d" %y1) time.sleep(2) y2 = time.perf_counter() print("%d" %y2) time.sleep(2) y3 = time.perf_counter() print("%d" %y3) # 举例说明: time.perf_counter() # 表示下面范围运行需要多长时间 sum = 0 for i in range(10000): sum += i print(time.perf_counter()) time.perf_counter() # 表示下面范围运行需要多长时间 sum = 0 for i in range(100): sum *= i print(time.perf_counter())
2. datetime模块:
datetime比time高级不少,可以理解为datetime基于time进行了封装,提供了各种使用函数。datetime模块的接口更直观,更容易调用。
模块中的类包括五种:
datetime类:同时有时间和日期
timedelta类:主要用于计算时间的跨度
tzinfo类:时区
time类:直关注时间
date类:直关注日期
举例10:获取当前时间:
import datetime
# 获取当期时间 d1 = datetime.datetime.now() print(d1) print(type(d1)) # 返回值: # 2019-05-12 20:11:51.832677 # <class 'datetime.datetime'>
举例11:获取指定时间:
# 获取指定时间 d2 = datetime.datetime(1999,10,1,10,28,25,123456) print(d2) # 返回值: # 1999-10-01 10:28:25.123456
举例12:将事件类型转换陈个字符串类型
# 将时间数据类型转换成字符串 d1 = datetime.datetime.now() d3 = d1.strftime("%Y-%m-%d %X") print(type(d3)) print(d3) # 返回值: # <class 'str'> # 2019-05-12 20:13:19
举例13:将格式化字符串转换为datetime对象
# 将时间数据类型转换成字符串 d1 = datetime.datetime.now() d3 = d1.strftime("%Y-%m-%d %X") print(type(d3)) print(d3) # 返回值: # <class 'str'> # 2019-05-12 20:13:19 # 将格式化字符串转为datetime对象 d4 = datetime.datetime.strptime(d3,"%Y-%m-%d %X") print(type(d4)) print(d4)
举例14:时间的减法运算
d5 = datetime.datetime(1999,10,1,10,28,25,123456) d6 = datetime.datetime.now() d7 = d6 - d5 print(type(d7)) print(d7) print(d7.days) # 提取到间隔的天数 print(d7.seconds) # 提取间隔的秒数 print(d5.minute) # 提取间隔的分钟数 # 返回值: # 7163 days, 9:46:45.024078 # 7163 # 35205 # 28
3. calendar模块:
举例15:
import calendar # 返回指定某年某月的日历 print(calendar.month(2017,7)) # 返回指定年的日历 print(calendar.calendar(2019)) # 判断是不是闰年True/False print(calendar.isleap(2019)) # 返回某个月的weekday的第一天和这个月所有的天数 print(calendar.monthrange(2017,7)) # (5, 31) 5 表示举例第一天的开始多少天 # 返回某个月以每一周为元素的列表 print(calendar.monthcalendar(2017,7)) print(type(calendar.monthcalendar(2017,7))) # 返回列表形式