标准库time、datetime、calendar、random的使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/meiqixiao/article/details/89283132

time库的使用

一、时间的获取

  1. time():获取当前时间戳,即计算机内部时间值,浮点数
  2. ctime():获取当前时间并以易读形式表示,返回字符串
  3. 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)

二、时间格式化

  1. strftime(tpl,ts):tpl是格式化模板,用来定义输出效果,ts是计算机内部时间类型变量
  2. 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'

程序计时

  1. 测量时间:perf_counter(),返回一个CPU级别的精确时间计数值,单位为秒,由于起点不确定,计算差值才有意义
  2. 产生时间: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天,返回最终计算出的日期。
  1. timetuple():返回日期对应的time.struct_time对象。
  2. toordinal():相当fromordinal(n)的逆过程,返回值即为fromordinal(n)中的日期序数n。
  3. weekday():返回该日期对应星期几,用[0,6]代表星期一到星期日。
  4. isoweekday():作用同weekday(),用[1,7]代表星期一到星期日。
  5. isocalendar():返回一个三元组,格式为(year,week_number,weekday),分别代表年,第几周,星期几。
  6. isoformat():返回标准日期格式:YYYY-MM-DD。
  7. ctime():返回格式为:Sat Apr 13 13:04:21 2019
  8. strftime(format):把日期按照format指定的格式进行格式化。
  9. 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对象,返回计算出的日期。
  1. timetuple():返回日期时间对应的time.struct_time对象。
  2. utctimetuple():与timetuple()相似,返回日期时间对应的UTC(时间标准时间)time.struct_time对象。
  3. astimezone():返回的格式中加入时区信息,格式为:2019-04-13 21:33:09+08:00。
  4. date():返回date部分
  5. time():返回time部分,tzinfo设置为None。
  6. isoformat(sep):返回标准日期时间格式,传入参数sep可设置日期和时间的分隔符。
  7. ctime():返回格式为:Sat Apr 13 13:04:21 2019
  8. strftime(format):把日期按照format指定的格式进行格式化。
  9. strptime(date_string,format):将字符串格式转换为日期格式。
  10. 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库

  1. setfirstweekday(firstweekday):指定一周的第一天,0是星期一,…,6为星期日
    calendar.setfirstweekday(firstweekday=6) # 将星期日设置为一周第一天
  2. firstweekday():返回一周的第一天, 是星期一,…,6为星期日0calendar.setfirstweekday(firstweekday=6) print(calendar.firstweekday())
  3. isleap(year):判断指定是否是闰年,闰年为True,平年为
    print(calendar.isleap(2019)) False
  4. leapdays(y1, y2):返回y1与y2年份之间的闰年数量,y1与y2皆为年份。包括起始年,不包括结束年
    print(calendar.leapdays(2008, 2011)) 1
  5. weekday(year, month, day):获取指定日期为星期几
  • 2019-04-13正是星期六,千万别忘记5代表的是星期六
    print(calendar.weekday(2019, 4, 13)) 5
  1. weekheader(n):返回包含星期的英文缩写,n表示英文缩写所占的宽度
    print(calendar.weekheader(4)) Mon Tue Wed Thu Fri Sat Sun
  2. monthrange(year, month):返回一个由一个月第一个天的星期与当前月的天数组成的元组
  • 查看日历可以知道,04-13正是星期六,并且8月共30天
    print(2019, 4) (5, 30)
  1. 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]]
  1. 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
  1. 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
  1. prcal(year, w=0, l=0, c=6, m=3):打印一年的日历,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,内部已做处理,至少换行1行,c表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m表示将12个月分为m列.
  2. 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]

猜你喜欢

转载自blog.csdn.net/meiqixiao/article/details/89283132