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

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

标准库time(python中文处理时间的标准库)

time库的载入

import time

time库包括三类函数

1.时间获取:time() ,ctime() ,gmtime()
2.时间格式化:strftime() , strptime()
3.程序计时:sleep() , perf_counter()

时间获取

time() 获取当前时间戳【从1970年1月1日 00:00开始但当前以秒为单位的时间】,即计算机内部时间值,浮点数
ctime() 获取当前时间并以易读取方式表示,返回字符串
gmtime() 获取当前时间,表示为计算机可处理的时间格式

>>>time.time()
1554816809.205003
>>>time.ctime()
'Tue Apr  9 21:35:38 2019'
>>>time.gmtime()
time.struct_time(tm_year=2019, 
                          tm_mon=4,
                          tm_mday=9,
                          tm_hour=13,
                          tm_min=36,
                          tm_sec=25, 
                          tm_wday=1, 
                          tm_yday=99, 
                          tm_isdst=0)

时间格式化(将时间以合理的方式展示出来)

1.strftime(tpl,ts)
tpl是格式化模板字符串,用来定义输出效果
ts是计算机内部时间类型变量

>>>t = time.gmtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",t )
'2019-04-09 21:45:55'

2.strptime(str,tpl)
将时间字符串变为计算机可处理的时间格式
str是字符串形式的时间值
tpl是格式化模板字符串,用来定义输入效果

>>>timestr = '2019-04-09 13:47:24'
>>>time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2019,
                          tm_mon=4,
                           tm_mday=9, 
                           tm_hour=13,
                            tm_min=47, 
                            tm_sec=24,
                             tm_wday=1,
                              tm_yday=99,
                               tm_isdst=-1)
%Y 年份
%m 月份
%B 月份名称
%b 月份名称缩写
%d 日期
%A 星期
%a 星期缩写
%H 小时(24h制)
%h 小时(12h制)
%p 上/下午
%M 分钟
%S

程序计时

测量时间:perf_counter()
产生时间:sleep()

perf_counter() 返回一个CPU级别的精确时间计数值,单位为秒(由于这个计数值起点不确定,连续调用差值才有意义)
sleep() s拟休眠的时间,单位是秒,可以是浮点数
>>>start = time.perf_counter()
>...
>>>end = time.perf_counter()
>...
>>>end - start
>...
>>>def wait():
       time.sleep(3.3)
>>>wait()
#程序将等待3.3秒后再退出

标准库datetime

载入

import datetime

常量

datetime.MAXYEAR 返回能表示的最大年份(返回值:9999)
datetime.MINYEAR 返回能表示的最小年份(返回值:1)

获得当前的时间

now = datetime.now()
print now
2017-05-25 22:56:46.066000

datetime转换为字符串

tiem=now.strftime( "%Y-%m-%d %H:%M:%S")
print tiem
2017-05-25 22:56:46

从字符串转换为datetime

cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
print cday
2015-06-01 18:19:59

比较日期

x.eq(y) 等于(x==y)
x.ge(y) 大于等于(x>=y)
x.gt(y) 大于(x>y)
x.le(y) 小于等于(x<=y)
x.lt(y) 小于(x)
x.ne(y) 不等于(x!=y)

以上方法的返回值为True\False

两个日期相差多少天

x.sub(y) x - y
x.rsub(y) y - x
  • timetuple()
>>>a = datetime.date(2017,3,22)
>>>a.timetuple()
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=81, tm_isdst=-1)
>>>a.timetuple().tm_year
2017
>>>a.timetuple().tm_mon
3
>>>a.timetuple().tm_mday
22
  • toordinal(): 返回公元公历开始到现在的天数。公元1年1月1日为1
>>> a = datetime.date(2017,3,22)
>>> a.toordinal()
736410
  • today():返回当前日期
>>> datetime.date.today()
datetime.date(2017, 3, 22)

标准库calendar

载入

import calendar

  • setfirstweekday(firstweekday):指定一周的第一天,0是星期一,…,6为星期日
    # 将星期日设置为一周第一天 calendar.setfirstweekday(firstweekday=6)
  • firstweekday():返回一周的第一天
>>>calendar.setfirstweekday(firstweekday=6)
>>>print(calendar.firstweekday())    
6
  • isleap(year):判断指定是否是闰年,闰年为True,平年为False
  • leapdays(y1, y2):返回y1与y2年份之间的闰年数量,y1与y2皆为年份。(包括起始年,不包括结束年)
  • weekday(year, month, day):获取指定日期为星期几
  • weekheader(n):返回包含星期的英文缩写,n表示英文缩写所占的宽度
>>>print(calendar.weekheader(4))
Mon  Tue  Wed  Thu  Fri  Sat  Sun 
  • monthrange(year, month):返回一个由一个月第一个天的星期与当前月的天数组成的元组
>>>print(2018, 8)
 (2, 31)
  • prmonth(theyear, themonth, w=0, l=0):打印一个月的日历,theyear指定年份,themonth指定月份,w每个单元格宽度,默认0,最小宽度为2,l每列换l行,默认为0,至少换行1行
>>>calendar.setfirstweekday(firstweekday=6)
>>>calendar.prmonth(2018, 8)
August 2018
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 31

  • month(theyear, themonth, w=0, l=0):返回一个月的日历的多行文本字符串。theyear指定年份,themonth指定月份,w每个单元格宽度,默认0,最小宽度为2,l每列换l行,默认为0,至少换行1行
>>>calendar.setfirstweekday(firstweekday=6)
>>>print(calendar.month(2018, 8))
August 2018
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 31
  • prcal(year, w=0, l=0, c=6, m=3):打印一年的日历,w每个单元格宽度,默认0,内部已做处理,最小宽度为2,l每列换l行,默认为0,至少换行1行,c表示月与月之间的间隔宽度,默认为6,最小宽度为2,m表示将12个月分为m列
>>>calendar.setfirstweekday(firstweekday=6)
>>>calendar.prcal(2018, m=4)
2018

      January                   February                   March                     April
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6                   1  2  3                   1  2  3       1  2  3  4  5  6  7
 7  8  9 10 11 12 13       4  5  6  7  8  9 10       4  5  6  7  8  9 10       8  9 10 11 12 13 14
14 15 16 17 18 19 20      11 12 13 14 15 16 17      11 12 13 14 15 16 17      15 16 17 18 19 20 21
21 22 23 24 25 26 27      18 19 20 21 22 23 24      18 19 20 21 22 23 24      22 23 24 25 26 27 28
28 29 30 31               25 26 27 28               25 26 27 28 29 30 31      29 30

        May                       June                      July                     August
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
       1  2  3  4  5                      1  2       1  2  3  4  5  6  7                1  2  3  4
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       8  9 10 11 12 13 14       5  6  7  8  9 10 11
13 14 15 16 17 18 19      10 11 12 13 14 15 16      15 16 17 18 19 20 21      12 13 14 15 16 17 18
20 21 22 23 24 25 26      17 18 19 20 21 22 23      22 23 24 25 26 27 28      19 20 21 22 23 24 25
27 28 29 30 31            24 25 26 27 28 29 30      29 30 31                  26 27 28 29 30 31

     September                  October                   November                  December
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
                   1          1  2  3  4  5  6                   1  2  3                         1
 2  3  4  5  6  7  8       7  8  9 10 11 12 13       4  5  6  7  8  9 10       2  3  4  5  6  7  8
 9 10 11 12 13 14 15      14 15 16 17 18 19 20      11 12 13 14 15 16 17       9 10 11 12 13 14 15
16 17 18 19 20 21 22      21 22 23 24 25 26 27      18 19 20 21 22 23 24      16 17 18 19 20 21 22
23 24 25 26 27 28 29      28 29 30 31               25 26 27 28 29 30         23 24 25 26 27 28 29
30                                                                            30 31
  • calendar(year, w=2, l=1, c=6, m=3):以多行字符串形式返回一年的日历,w每个单元格宽度,默认2,最小宽度为2,l每列换l行,默认为1,至少换行1行,c表示月与月之间的间隔宽度,默认为6,最小宽度为2,m表示将12个月分为m列

>>>calendar.setfirstweekday(firstweekday=6)
>>>print(calendar.calendar(2018, m=4))


                                               2018

      January                   February                   March                     April
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6                   1  2  3                   1  2  3       1  2  3  4  5  6  7
 7  8  9 10 11 12 13       4  5  6  7  8  9 10       4  5  6  7  8  9 10       8  9 10 11 12 13 14
14 15 16 17 18 19 20      11 12 13 14 15 16 17      11 12 13 14 15 16 17      15 16 17 18 19 20 21
21 22 23 24 25 26 27      18 19 20 21 22 23 24      18 19 20 21 22 23 24      22 23 24 25 26 27 28
28 29 30 31               25 26 27 28               25 26 27 28 29 30 31      29 30

        May                       June                      July                     August
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
       1  2  3  4  5                      1  2       1  2  3  4  5  6  7                1  2  3  4
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       8  9 10 11 12 13 14       5  6  7  8  9 10 11
13 14 15 16 17 18 19      10 11 12 13 14 15 16      15 16 17 18 19 20 21      12 13 14 15 16 17 18
20 21 22 23 24 25 26      17 18 19 20 21 22 23      22 23 24 25 26 27 28      19 20 21 22 23 24 25
27 28 29 30 31            24 25 26 27 28 29 30      29 30 31                  26 27 28 29 30 31

     September                  October                   November                  December
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
                   1          1  2  3  4  5  6                   1  2  3                         1
 2  3  4  5  6  7  8       7  8  9 10 11 12 13       4  5  6  7  8  9 10       2  3  4  5  6  7  8
 9 10 11 12 13 14 15      14 15 16 17 18 19 20      11 12 13 14 15 16 17       9 10 11 12 13 14 15
16 17 18 19 20 21 22      21 22 23 24 25 26 27      18 19 20 21 22 23 24      16 17 18 19 20 21 22
23 24 25 26 27 28 29      28 29 30 31               25 26 27 28 29 30         23 24 25 26 27 28 29
30 

更多详情

标准库random (random库是使用随机数的Python标准库)

random库包含两类函数,常用的共8个
–基本随机函数: seed(), random()
–扩展随机函数:randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()
1.基本随机函数
Python中产生随机数使用随机数种子来产生 (只要种子相同,产生的随机序列,无论是每一个数,还是数与数之间的关系都是确定的,所以随机数种子确定了随机序列的产生)

seed(a=None) 初始化给定的随机数种子,默认为当前系统时间 >>>random.seed(10) (产生种子10对应的序列)
random() 生成一个[0.0,1.0)之间的随机小数>>>random.random() 0.5714025946899135 (随机数产生与种子有关,如果种子是1哦,第一个数必定是这个)

2.扩展随机数函数

randint(a,b) 生成一个[a,b]之间的整数>>>random.randint(10,100)
randrange(m,n[,k]) 生成一个[m,n)之间以k为步长的随机整数>>>random.randrange(10,100,10)
getrandbits(k) 生成一个k比特长的随机整数>>>random.getrandbits(16) >>>37885
uniform(a,b) 生成一个[a,b]之间的随机小数>>>random.uniform(10,100)>>>16.848041210321334
choice(seq) 序列相关 从序列中随机选择一个元素>>>random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9])>>>8
shuffle(seq)序列相关 将序列seq中元素随机排列,返回打乱后的序列>>>s=[1, 2, 3, 4, 5, 6, 7, 8, 9]>>>random.shuffle(s)>>>print(s)>>>[9, 4, 6, 3, 5, 2, 8, 7, 1]

猜你喜欢

转载自blog.csdn.net/dongzixian/article/details/89164604