#15 time&datetime&calendar模塊

前言

從這一節開始,記錄一些經常使用的內置模塊,模塊的學習可能比較無聊,但基礎就在這無聊的模塊中,話很少說,本節記錄和時間相關的模塊!學習

1、time模塊

Python中設計時間的模塊有不少,可是最經常使用的就是time模塊了,先來看看time模塊的全部方法:測試

In [3]: dir(time)
Out[3]:
['CLOCK_MONOTONIC', 'CLOCK_MONOTONIC_RAW', 'CLOCK_PROCESS_CPUTIME_ID', 'CLOCK_REALTIME', 'CLOCK_THREAD_CPUTIME_ID', '_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'clock_getres', 'clock_gettime', 'clock_settime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname','tzset']

方法還很多呢,一點一點來剖析它spa

1.獲取時間設計

In [19]: time.time()                      #獲取當前時間的時間戳
Out[19]: 1549343780.962011

In [20]: time.localtime()                 # 獲取當地時間,返回當地時間下的時間元組,但是設置是否爲夏令時,tm_isdst爲夏令時
Out[20]: time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=13, tm_min=16, tm_sec=27, tm_wday=1, tm_yday=36, tm_isdst=0)

In [21]: time.localtime(time.time())      # 參數接受爲時間戳
Out[21]: time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=13, tm_min=16, tm_sec=39, tm_wday=1, tm_yday=36, tm_isdst=0)

In [22]: time.asctime()                   # 獲取格式化時間
Out[22]: 'Tue Feb  5 13:17:23 2019'

In [23]: time.asctime(time.localtime())   # 參數爲struct_time格式
Out[23]: 'Tue Feb  5 13:17:40 2019'

In [24]: time.ctime()                     # 獲取格式化時間,同上
Out[24]: 'Tue Feb  5 13:18:11 2019'

In [25]: time.gmtime()                    # 同localtime,但返回格林威治天文時間下的時間元組
Out[25]: time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=5, tm_min=18, tm_sec=18, tm_wday=1, tm_yday=36, tm_isdst=0)

2.格式化日期code

In [28]: time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())    # 格式化成 年-月-日 時:分:秒 形式
Out[28]: '2019-02-05 13:26:27'

In [29]: time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) # 格式化成周 月 日 時:分:秒 年 形式
Out[29]: 'Tue Feb 05 13:26:47 2019'
In [33]: time.gmtime(time.time())        # 將時間戳轉換爲struct_time格式
Out[33]: time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=5, tm_min=40, tm_sec=15, tm_wday=1, tm_yday=36, tm_isdst=0)

In [34]: time.mktime(time.localtime())   # 將struct_time格式轉換爲時間戳 
Out[34]: 1549345233.0
In [35]: time.strptime("2019/02/05","%Y/%m/%d")   # 將格式化日期轉換爲struct_time格式
Out[35]: time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=36, tm_isdst=-1)

補充:time模塊日期格式化符號blog

%y      # 兩位數的年份表示(00-99)
%Y      # 四位數的年份表示(000-9999)
%m      # 月份(01-12)
%d      # 月內中的一天(0-31)
%H      # 24小時制小時數(0-23)
%I      # 12小時制小時數(01-12)
%M      # 分鐘數(00=59)
%S      # 秒(00-59)
%a      # 本地簡化星期名稱
%A      # 本地完整星期名稱
%b      # 本地簡化的月份名稱
%B      # 本地完整的月份名稱
%c      # 本地相應的日期表示和時間表示
%j      # 年內的一天(001-366)
%p      # 本地A.M.或P.M.的等價符
%U      # 一年中的星期數(00-53)星期天爲星期的開始
%w      # 星期(0-6),星期天爲星期的開始
%W      # 一年中的星期數(00-53)星期一爲星期的開始
%x      # 本地相應的日期表示
%X      # 本地相應的時間表示
%Z      # 當前時區的名稱
%%      # %號自己

3.睡眠字符串

In [36]: time.sleep(3)   # 使用time.sleep(秒數)來達到睡眠

4.其餘方法get

In [37]: time.altzone      # 返回格林威治西部的夏令時地區的偏移秒數。若是該地區在格林威治東部會返回負值(如西歐,包括英國)。對夏令時啓用地區才能使用
Out[37]: -28800

In [38]: time.clock()      # 以浮點數計算的秒數返回當前的CPU時間,用來衡量不一樣程序的耗時
Out[38]: 10.241939
 
In [39]: time.timezone     # 當地時區(未啓動夏令時)距離格林威治的偏移秒數(>0,美洲;<=0大部分歐洲,亞洲,非洲)
Out[39]: -28800

In [40]: time.tzname       # 包含一對根據狀況的不一樣而不一樣的字符串,分別是帶夏令時的本地時區名稱,和不帶的
Out[40]: ('CST', 'CST')

2、datetime模塊

datetime模塊相比於time模塊並不經常使用,但仍是要了解它class

In [42]: datetime.datetime.now()   # 獲取當前時間,直接返回格式化後的時間格式,比較人性化
Out[42]: datetime.datetime(2019, 2, 5, 13, 56, 28, 929415)

In [43]: datetime.datetime.now() + datetime.timedelta(5)         # 當前時間加5天,默認單位是天
Out[43]: datetime.datetime(2019, 2, 10, 14, 1, 14, 324972)

In [44]: datetime.datetime.now() + datetime.timedelta(-5)        # 當前時間減5天
Out[44]: datetime.datetime(2019, 1, 31, 14, 1, 21, 15534)

In [45]: datetime.datetime.now() + datetime.timedelta(hours=5)   # 當前時間加5小時
Out[45]: datetime.datetime(2019, 2, 5, 19, 1, 33, 334723)

In [46]: datetime.datetime.now() + datetime.timedelta(minutes=5) # 當前時間加5分鐘
Out[46]: datetime.datetime(2019, 2, 5, 14, 6, 46, 123465)

能夠看到datetime模塊經常使用來做日期的加減計算,這方面頗有優點import

3、calendar模塊

In [9]: import calendar

In [11]: print(calendar.calendar(2019))   # calendar.calendar(year,w=2,l=1,c=6),返回一個多行字符串格式的year年年曆,3個月一行,間隔距離爲c=6,每日寬度間隔爲w=2字符,每行長度爲21* W+18+2* C,l=1是每星期行數。
                                  2019

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

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

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

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                   1  2  3                         1
 7  8  9 10 11 12 13       4  5  6  7  8  9 10       2  3  4  5  6  7  8
14 15 16 17 18 19 20      11 12 13 14 15 16 17       9 10 11 12 13 14 15
21 22 23 24 25 26 27      18 19 20 21 22 23 24      16 17 18 19 20 21 22
28 29 30 31               25 26 27 28 29 30         23 24 25 26 27 28 29
                                                    30 31
In [12]: calendar.firstweekday()   # 返回每週的第一天,0表明週一
Out[12]: 0

In [13]: calendar.isleap(2004)   # 測試是否爲閏月年
Out[13]: True

In [14]: calendar.isleap(2019)
Out[14]: False

In [15]: print(calendar.month(2019,1))   # calendar.month(year,month,w=2,l=1),返回一個多行字符串格式的year年month月日曆,兩行標題,一週一行,每日寬度間隔爲w=2字符每行的長度爲7* w+6,l=1是每星期的行數。
    January 2019
Mo Tu We Th Fr Sa Su
    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

calendar掌握這麼多就差很少了,若是須要查看其餘方法,查看其幫助信息便可。

相關文章
相關標籤/搜索