標準庫time,datetime,calendar,random的使用

標準庫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]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章