time库:
将time库的函数大致分为三类:
- 时间获取 time(), ctime(),gmtime(),localtime()
- 时间格式化 strftime() , strptime()
- 程序计时函数 sleep(), perf_counter(), clock()
1、时间获取函数:
time库基于UTC时间,从1970/1/1 0:00:00开始计时,以秒为单位
time.gmtime(0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
time库时间结构:
1.time.time() 获取当前时间戳,即计算机内部时间值,是浮点数类型
2.time.ctime() 获取当前时间并以易读方式表示,返回字符串
3.time.gmtime() 获取当前时间,便是为计算机可处理的时间格式
4.time.localtime() 结果和gmtime()返回结果基本一致
2、时间格式化函数
strftime()与strptime()的区别主要是格式上的不同
time.strftime(format[,t])
例:
time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()
'2018-01-10 13:10:28'
time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
'2018-01-10 21:09:45'
time.strptime(string[,format])
例:time.strptime('30 Nov 00', '%d%b%y)
time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
相同:
时间必须都是字符串形式,如果没有输入时间就按照计算机内部时间输出,支持同样的格式化操作
格式化字符串 | 含义 |
%a | 缩写工作日名称 |
%A | 整个工作日名称 |
%b | 缩写月份名称 |
%B | 完整月份名称 |
%c | 语言环境的适当日期和时间表示 |
%d | 日,【01,31】 |
%H | 时(24小时制),[00,23] |
%l | 时(12小时制), [01, 12] |
%j | 一年的第几天[000, 366] |
%m | 月为十进制数[01,12] |
%M | 以十进制数分钟[00,59] |
%P | AM 或 PM |
%U | 年的星期数(星期日为星期的第一天)为十进制数[00,53]。在第一个星期日之前的新的一年的所有天被认为是在第0周 |
%w | 工作日为十进制数[0(星期日),6] |
%W | 年的星期数(星期一作为星期的第一天)作为十进制数[00,53]。在第一个星期一之前的新的一年中的所有天被认为是在第0周 |
%x | 日期表示 |
%X | 时间表示 |
%Y | 年份以世纪为十进制数 |
%y | 年,无世纪作为十进制数[00,99] |
%z | 指示与+ HHMM或-HHMM形式的UTC / GMT的正或负时差的时区偏移,其中H表示十进制小时数字,M表示十进制分数字[-23:59,+23:59] |
%Z | 时区名称(如果没有时区,则不包含字符) |
%% | 表示 % |
3.程序计时函数
1.time.sleep(secs)
根据给定的秒数暂停程序运行,时间不一定完全与输入时间一致,输入参数可以时整数、小数等
2.time.clock()
用以浮点数计算的秒数返回当前的 CPU 时间。用来衡量不同程序的耗时。
3.time.perf_counter()
返回计时器的准确时间(系统的运行时间),包含整个系统的睡眠时间(不包含系统睡眠时间可用process-time())。由于返回值的基准点时未定义的,所以只有连续调用的结果之间的差才是有效的。
datetime库:
相比较于time库,datetime库不受平台限制,也更加强大。详情可看官方文档
datetime以格林威治时间为基础,每天由3600*24秒定义。包含两个常量:datetime.MINYEAR, datetime.MAXYEAR,分别等于1,9999,代表datetime表示的最大与最小年份。
datetime库由五个类组成:
datetime.data: 日期表示类,可以表示年月日等;
datetime.time: 时间表示类,表示小时、分钟、秒、毫秒等
datetime.datetime : 日期和时间表示的类,覆盖date和time
datetime.tzinfo: 与时区有关的类
datetime.timedelta: 与时间间隔有关的类
类比较多可以一次全部引入
创建对象:
datetime.now;datetime.utcnow();datetime.datetime()默认当前时间,也可以用datetime()直接创建一个datetime对象
>>> from datetime import *
>>> someday = datetime(2019, 4,8,12,12,12,1)
>>> someday
datetime.datetime(2019, 4, 8, 12, 12, 12, 1)
datetime类的常用属性:
属性 | 描述 |
someday.min | 固定返回datetime的最小时间对象 |
someday.max | 固定返回datetime的最大时间对象 |
someday.year | 返回someday包含的年份 |
someday.month | 返回someday包含的月份 |
someday.day | 返回someday包含的日期 |
someday.hour | 返回someday包含的小时 |
someday.minute | 返回someday包含的分钟 |
someday.second | 返回someday包含的秒钟 |
someday.microsecond | 返回someday包含的微秒值 |
datetime类常用的格式化方法:
someday.isoformat() 采用ISO 8601 标准时间显示
someday.isoweekday() 根据日期计算星期后返回1~7,对应星期一到星期天
someday.strftime(format) 和time库的一致
calendar库
calendar库是与日历有关的库,功能和Unix的cal 软件类似。里面由很多个类,默认一周第一天是星期一,最后一天是星期日,分别是0~6。可以使用setfirstweekday()定义任意一天为第一天。
caclendar.calendar类
setfirstweekday(firstweekday): 重置一周的第一天
firstweekday(): 查看第一天是哪一天
isleap(year):判断是否是闰年,是则返回true,反之返回false
leapdays(y1,y2):返回y1 和 y2年份之间的闰年数量
weekday(year, month, day): 查看指定日期为星期几
weekheader(n): 返回包含星期的英文缩写,n代表缩写所占的长度
monthrange(year, month): 返回一个由一个月第一天的星期与当月天数组成的元组
monthcalendar(year, month): 返回一个月中天数列表(不是当前月份的天数为0),按周划分,为一个二维数组。包括月份开始那周的所有日期和月份结束那周的所有日期
prmonth(theyear, themonth, w= 0, l = 0):打印一个月的日历,w指定每个单元格的宽度,默认为0,最小宽度为2,l每列换l行
prcal(year, w = 0, l= 0,c = 6, m = 3):打印一年的日历c表示月之间的间隔,m 表示将12个月分为m列
random库:
random基于梅森旋转算法生成伪随机数序列,不适用于随机性要求较高的加密算法,这很不安全。所有函数基于最基本的random.random()函数拓展实现。
梅森算法基于随机种子产生随机序列,随机序列根据随机种子产生,种子相同随机序列中的每一个数都是一致的
函数 | 描述 |
seed(a = None) | 初始化随机数种子默认为当前系统时间 |
random() | 生成一个[0.0, 1.0)之间的随机小数 |
randint(a, b) | 生成一个[a, b]之间的整数 |
randrange(start, stop[,step]) | 生成一个[start, stop)之间以step为步长的随机整数 |
getrandbits(k) | 生成一个k bits的长度的随机整数 |
uniform(a,b) | 生成[a, b]之间的随机小数 |
choice(seq) | 从序列类型,例如列表随即返回一个元素 |
shuffle(seq) | 将序列类型中的元素随机排列,返回打乱后的序列 |
sample(pop, k) | 从pop 类型中随机选取k个元素,以列表类型返回 |