版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
time库的使用
一、时间的获取
- time():获取当前时间戳,即计算机内部时间值,浮点数
- ctime():获取当前时间并以易读形式表示,返回字符串
- gmtime():获取当前时间,表示为计算机可处理时间格式
>>>time.time()
1555131830.0089278
>>>time.ctime()
'Sat Apr 13 13:04:21 2019'
>>>time.gmtime()
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=13, tm_hour=5, tm_min=5, tm_sec=25, tm_wday=5, tm_yday=103, tm_isdst=0)
二、时间格式化
- strftime(tpl,ts):tpl是格式化模板,用来定义输出效果,ts是计算机内部时间类型变量
- strptime(str,tpl):str是字符串形式的时间值,tpl是格式化模板,用来定义输入效果
>>> t=time.gmtime()
>>> time.strftime("%Y-%m-%d %H:%M:%S", t)
'2019-04-13 05:10:54'
>>>timeStr = '2019-04-13 05:10:54'
>>>time.strptime(timeStr,“%Y-%m-%d %H:%M:%S”
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=13, tm_hour=5, tm_min=10, tm_sec=54, tm_wday=5, tm_yday=103, tm_isdst=-1)
格式化控制符
字符串 | 说明 | 实例 |
---|---|---|
%Y | 年份 | 如2019 |
%m | 月份 | 如10 |
%B | 月份名称 | 如December |
%b | 月份名称缩写 | 如Dec |
%d | 日期 | 如31 |
%A | 星期 | 如Monday |
%a | 星期缩写 | 如Mon |
%H | 小时(24小时制) | 如12 |
%h | 小时(12小时制) | 如7 |
%p | 上/下午 | AM,PM |
%M | 分钟 | 如30 |
%S | 秒 | 如30 |
>>>time.strftime("%A-%p")
'Saturday-PM'
>>>time.strftime("%M:%S")
'22:24'
>>>time.strftime("%M:%S",t)
'10:54'
程序计时
- 测量时间:perf_counter(),返回一个CPU级别的精确时间计数值,单位为秒,由于起点不确定,计算差值才有意义
- 产生时间:sleep(s),s为休眠时间,单位为秒,可以为浮点数
>>>start = time.perf_counter()
>>>start
1664.9830404
>>> end=time.perf_counter()
>>> end
1692.3651789
>>> end - start
27.38213850000011
>>>def wait():
time.sleep(3)
>>>wait() #程序将在等待3秒后退出
datetime库
date类详解
date类包含三个参数,分别为year,month,day,返回格式为year-month-day。
函数 | 说明 |
---|---|
new(year,month,day) | 默认的构造函数,创建date类的对象时直接传year,month,day三个参数即可返回对应的日期。 |
datetime.date.fromtimestamp(t) | 使用时间戳构造对象,传入参数t为一个时间戳,返回时间戳t对应的日期。 |
datetime.date.today() | 使用今天的日期构造对象,无参数,返回今天的日期。 |
datetime.date.fromordinal(n) | 使用日期序数构造对象,传入参数为一个整数序数,代表从公元1年1月1日开始的序数,序数每增加1代表增加1天,返回最终计算出的日期。 |
- timetuple():返回日期对应的time.struct_time对象。
- toordinal():相当fromordinal(n)的逆过程,返回值即为fromordinal(n)中的日期序数n。
- weekday():返回该日期对应星期几,用[0,6]代表星期一到星期日。
- isoweekday():作用同weekday(),用[1,7]代表星期一到星期日。
- isocalendar():返回一个三元组,格式为(year,week_number,weekday),分别代表年,第几周,星期几。
- isoformat():返回标准日期格式:YYYY-MM-DD。
- ctime():返回格式为:Sat Apr 13 13:04:21 2019
- strftime(format):把日期按照format指定的格式进行格式化。
- replace(year,month,day):传入参数为year,month,day,返回对应的新日期。
time类
time类包含六个参数,分别为hour,minute,second,microsecond,tzinfo,fold,返回格式为hour:minute:second(.microsecond)。
1.默认的构造函数,创建time类的对象时直接传入相应参数即可返回对应的时间。
__new__(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, fold=0)
函数 | 说明 |
---|---|
isoformat() | 返回标准时间格式:HH:MM:SS.mmmmmm+zz:zz。 |
strftime(format) | 把时间按照format指定的格式进行格式化 |
utcoffset() | 返回timezone的偏移量。 |
tzname() | 返回timezone的名称。 |
replace() | 传入对应的参数,返回新的时间。 |
datetime类
datetime类是date类和time类的合体,包含前两个类的全部参数。
函数 | 说明 |
---|---|
new(year, month, day, hour=0, minute=0, second=0,microsecond=0, tzinfo=None, fold=0) | 默认的构造函数,创建datetime类的对象时直接传入相应参数即可返回对应的时间日期。 |
fromtimestamp(t) | 使用时间戳构造对象,传入参数t为一个时间戳,返回时间戳t对应的日期和时间。 |
utcfromtimestamp(t) | 使用时间戳构造对象,传入参数t为一个时间戳,返回时间戳t对应的UTC(时间标准时间)日期和时间。 |
now() | 使用当前日期和时间构造对象,无参数,返回当前的日期和时间。 |
utcnow() | 使用当前日期和时间构造对象,无参数,返回当前的UTC(时间标准时间)日期和时间。 |
combine(date,time) | 使用date和time构造对象,传入参数为1个date对象和1个time对象,返回计算出的日期。 |
- timetuple():返回日期时间对应的time.struct_time对象。
- utctimetuple():与timetuple()相似,返回日期时间对应的UTC(时间标准时间)time.struct_time对象。
- astimezone():返回的格式中加入时区信息,格式为:2019-04-13 21:33:09+08:00。
- date():返回date部分
- time():返回time部分,tzinfo设置为None。
- isoformat(sep):返回标准日期时间格式,传入参数sep可设置日期和时间的分隔符。
- ctime():返回格式为:Sat Apr 13 13:04:21 2019
- strftime(format):把日期按照format指定的格式进行格式化。
- strptime(date_string,format):将字符串格式转换为日期格式。
- replace():传入对应的参数,返回新的日期时间。
timedelta类
timedelta类代表两个datetime对象之间的时间差。
默认的构造函数,创建timedelta类的对象时直接传入相应参数即可返回对应单位的时间差。
__new__(days=0, seconds=0, microseconds=0,milliseconds=0, minutes=0, hours=0, weeks=0)
1.支持两个timedelta对象之间的加、减操作。
2.支持对一个timedelta进行取正、取负、取绝对值等操作。
3.支持一个timedelta对象乘以、除以一个整数的操作。
calender库
- setfirstweekday(firstweekday):指定一周的第一天,0是星期一,…,6为星期日
calendar.setfirstweekday(firstweekday=6) # 将星期日设置为一周第一天
- firstweekday():返回一周的第一天, 是星期一,…,6为星期日
0calendar.setfirstweekday(firstweekday=6) print(calendar.firstweekday())
- isleap(year):判断指定是否是闰年,闰年为True,平年为
print(calendar.isleap(2019)) False
- leapdays(y1, y2):返回y1与y2年份之间的闰年数量,y1与y2皆为年份。包括起始年,不包括结束年
print(calendar.leapdays(2008, 2011)) 1
- weekday(year, month, day):获取指定日期为星期几
- 2019-04-13正是星期六,千万别忘记5代表的是星期六
print(calendar.weekday(2019, 4, 13)) 5
- weekheader(n):返回包含星期的英文缩写,n表示英文缩写所占的宽度
print(calendar.weekheader(4)) Mon Tue Wed Thu Fri Sat Sun
- monthrange(year, month):返回一个由一个月第一个天的星期与当前月的天数组成的元组
- 查看日历可以知道,04-13正是星期六,并且8月共30天
print(2019, 4) (5, 30)
- monthcalendar(year, month):返回一个月中天数列表(不是当前月份的天数为0),按周划分,为一个二维数组。包括月份开始那周的所有日期和月份结束那周的所有日期
>>>calendar.setfirstweekday(firstweekday=6)
>>>print(calendar.monthcalendar(2018, 8))
[[0, 0, 0, 1, 2, 3, 4], [5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25], [26, 27, 28, 29, 30, 31, 0]]
- prmonth(theyear, themonth, w=0, l=0):打印一个月的日历,theyear指定年份,themonth指定月份,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,内部已做处理,至少换行1行
>>>calendar.setfirstweekday(firstweekday=6)
>>>calendar.prmonth(2019, 4)
April 2019
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
- month(theyear, themonth, w=0, l=0):返回一个月的日历的多行文本字符串。theyear指定年份,themonth指定月份,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,内部已做处理,至少换行1行
>>>calendar.setfirstweekday(firstweekday=6)
>>>print(calendar.month(2019, 4))
April 2019
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
- prcal(year, w=0, l=0, c=6, m=3):打印一年的日历,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,内部已做处理,至少换行1行,c表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m表示将12个月分为m列.
- calendar(year, w=2, l=1, c=6, m=3):以多行字符串形式返回一年的日历,w每个单元格宽度,默认2,内部已做处理,最小宽度为2,l每列换l行,默认为1,内部已做处理,至少换行1行,c表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m表示将12个月分为m列
random库
random库是使用随机数的Python标准库.
基本随机数
函数 | 描述 |
---|---|
seed(a=None) | 初始化给定的随机数种子,默认为当前系统时间 |
random() | 生成一个[0.0,1.0)之间的随机小数 |
>>>random.seed(10) #产生种子10对应的序列
>>>random.random() #随机数产生与种子有关,如果种子是1,第一个数必定是这个
0.5714025946899135
扩展随机数
函数 | 描述 |
---|---|
randint(a,b) | 生成一个[a,b]之间的整数 |
randrange(m,n[,k]) | 生成一个[m,n)之间以k为步长的随机整数 |
getrandbits(k) | 生成一个k比特长的随机整数 |
uniform(a,b) | 生成一个[a,b]之间的随机小数 |
choice(seq) | 从序列中随机选择一个元素 |
shuffle(seq) | 将序列seq中元素随机排列,返回打乱后的序列 |
>>>random.randint(10,100)
71
>>>random.randrange(10,100,10)
10
>>>random.randrange(10,100,10)
70
>>>random.getrandbits(16)
37885
>>>random.uniform(10,100)
11.334920142209832
>>>random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9])
8
>>>s=[1, 2, 3, 4, 5, 6, 7, 8,9]
>>>random.shuffle(s)
>>>print(s)
[3, 9, 7, 4, 1, 2, 6, 5, 8]