Python3時間日誌模塊time/datetime/calendar

1.time模塊

方法

描述

time.time()

返回當前的時間戳(從1970紀元後經過的浮點秒數)

time.sleep()

推遲調用線程的運行,表示進行掛起的時間(CPU不工作)

time.clock()

返回CPU執行的時間

time.gmtime()

將一個時間戳轉換爲UTC時區的struct_time元組

time.localtime()

將時間戳轉換爲本地時間的struct_time元組

time.strftime()

接收時間元組,並返回以可讀字符串表示的當地時間,格式由format決定

time.asctime()

接受時間元組並返回一個可讀的形式爲"周 月 日 時:分:秒 年")的的字符串

time.strptime()

根據指定的格式把一個時間字符串解析爲時間元組

time.ctime()

將一個時間戳轉換爲轉換爲time.asctime()的形式

time.mktime()

轉換爲時間戳返回用描述來表示時間的浮點數

1.1 time.time()

返回當前的時間戳(從1970紀元後經過的浮點秒數)

>>> import time
>>> time.time()
1565112079.3377519

1.2 time.sleep()

推遲調用線程的運行,單位(s)表示進行掛起的時間(CPU不工作),在多線程那塊用的較多 

>>> import time
>>> for i in range(3):
...     print("i:>>{}".format(time.ctime(time.time())))
...     time.sleep(3)
... 
i:>>Wed Aug  7 01:24:20 2019              #可以看到每隔3秒打印輸出一個變量
i:>>Wed Aug  7 01:24:23 2019
i:>>Wed Aug  7 01:24:26 2019

1.3 time.clock()

返回CPU執行的時間,不太常用,好像新版已被其他方法取代

>>> time.clock()
0.819719

1.4 time.gmtime()

將一個時間戳轉換爲UTC時區的struct_time元組

>>> import time
>>> time.gmtime(time.time())
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=6, tm_hour=17, tm_min=29, tm_sec=50, tm_wday=1, tm_yday=218, tm_isdst=0)
>>> time.gmtime()                     #不加參數好像默認獲取當前時間戳
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=6, tm_hour=17, tm_min=29, tm_sec=54, tm_wday=1, tm_yday=218, tm_isdst=0)

1.5 time.localtime()

將時間戳轉換爲本地時間的struct_time元組,和UTC時間相差八小時

>>> import time
>>> time.localtime()
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=7, tm_hour=1, tm_min=32, tm_sec=8, tm_wday=2, tm_yday=219, tm_isdst=0)
>>> time.localtime(time.time())
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=7, tm_hour=1, tm_min=32, tm_sec=15, tm_wday=2, tm_yday=219, tm_isdst=0)

1.6 time.strftime()

接收時間元組,並返回以可讀字符串表示的當地時間,格式由format決定

1. 時間日期格式化符號

  • %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:當前時區的名稱
  • %%:%號本身
>>> import time
>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
'2019-08-07 01:44:52'

1.7 time.strptime()

根據指定的格式把一個時間字符串解析爲時間元組

>>> struct_time = time.strptime('2019-08-07 01:48:16', '%Y-%m-%d %H:%M:%S')
>>> struct_time
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=7, tm_hour=1, tm_min=48, tm_sec=16, tm_wday=2, tm_yday=219, tm_isdst=-1)

1.8 time.asctime()

接受時間元組並返回一個可讀的形式爲"周 月 日 時:分:秒 年")的的字符串

>>> import time
>>> time.asctime(time.localtime())
'Wed Aug  7 01:39:00 2019'
>>> time.asctime((2019, 8, 7, 1, 39, 38, 2, 46, 0))
'Wed Aug  7 01:39:38 2019'

1.9 time.ctime()

將一個時間戳轉換爲轉換爲time.asctime()的形式

>>> import time
>>> time.ctime()
'Wed Aug  7 01:39:57 2019'
>>> time.ctime(time.time())
'Wed Aug  7 01:40:00 2019'

1.10 time.mktime()

轉換爲時間戳返回用描述來表示時間的浮點數

>>> import time
>>> time.mktime(time.localtime())
1565113310.0
>>> time.mktime((2019, 8, 7, 1, 42, 38, 2, 46, 0))
1565113358.0

2. datetime模塊

datetime相比time進行了封裝,提供了更多的函數,更容易調用。常用的類有

類名 描述
datetime 日期時間對象
date 日期對象,由year(年)、month(月)、day(日)三部分組成
time 時間對象,由hour(時)、minute(分)、second(秒)、microsecond(毫秒)、tzinfo五部分組成 
timedelta 時間間隔,用於計算時間的跨度
tzinfo 時區信息對象

2.1 date類

日期對象,由year(年)、month(月)、day(日)三部分組成

>>> d = datetime.date.today()
>>> d
datetime.date(2019, 8, 7)
>>> d.year                        #等價於d.__getattribute__('year')
2019
>>> d.month                       #等價於d.__getattribute__('month')
8
>>> d.day                         #等價於d.__getattribute__('day')
7

2.2 time類

時間對象,由hour(時)、minute(分)、second(秒)、microsecond(毫秒)、tzinfo五部分組成 

>>> d = datetime.time(2, 47, 59, 899)
>>> d
datetime.time(2, 47, 59, 899)
>>> d.hour                             #等價於d.__getattribute__('hour')
2
>>> d.minute                           #等價於d.__getattribute__('minute')
47
>>> d.second                           #等價於d.__getattribute__('second')
59
>>> d.microsecond                      #等價於d.__getattribute__('microsecond')
899
>>> d.tzinfo                           #等價於d.__getattribute__('tzinfo')
>>>  

2.3 datetime類

日期時間對象,可以看成date類和time類的組合。、

1. datetime.datetime.now(tz=None)

返回當前日期時間的datetime對象。若tz=None,等於datetime.today().若指定tz,則返回帶tzinfo的datetime對象

>>> import datetime
>>> d = datetime.datetime.now()
>>> print(d)
2019-08-07 02:11:07.902924

2. datetime.datetime.combine()

將一個date對象和一個time對象合併生成一個datetime對象

>>> import datetime
>>> d = datetime.date(2019, 8, 7)
>>> t = datetime.time(2, 48 , 59, 1234)
>>> datetime.datetime.combine(d, t)
datetime.datetime(2019, 8, 7, 2, 48, 59, 1234)

3. datetime.datetime.today()

返回一個datetime對象

>>> datetime.datetime.today()
datetime.datetime(2019, 8, 7, 2, 14, 47, 946324)

4. datetime.datetime.utcnow()

返回一個tz爲None的UTC時間的datetime對象

>>> import datetime
>>> datetime.datetime.utcnow()
datetime.datetime(2019, 8, 6, 18, 16, 56, 634938)

5. datetime.datetime.srptime()

返回一個格式化的datetime對象

>>> import datetime
>>> datetime.datetime.strptime('2019-07-08 02:49:33', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2019, 7, 8, 2, 49, 33)

3. calendar模塊

3.1 calendar.calendar()

該方法返回某年的日曆

>>> import calendar
>>> calendar.calendar(2019)
                                   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

3.2 calendar.month()

該方法返回某年某月的日曆

>>> import calendar
>>> calendar.month(2019, 8)
    August 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

3.3 calendar.isleap()

該方法用來判斷某年是不是閏年

>>> import calendar
>>> calendar.isleap(2019)
False
>>> calendar.isleap(2020)
True

3.4 calendar.timegm()

該方法將一個本地時間的struct_time元組轉換爲時間戳返回

>>> import time
>>> import calendar
>>> calendar.timegm(time.localtime())
1565143691

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章