1. 程式人生 > >python學習筆記17(時間模組)

python學習筆記17(時間模組)

時間模組

時間的表示方式
格林尼治天文時間\世界協調時間(UTC):世界標準時間,北京時間等於UTC+8
夏令時(DST):是一種節約能源而人為規定時間制度,在夏季調快1個小時

時間的表示形式:
1、時間戳
以整型或浮點型表示時間的一個以秒為單位的時間間隔。代表當前時間與1970年1月1日相隔多少秒
2、元組
這個元組有以下9個整型內容
year
month
day
hours
minutes
seconds
weekday
Julia day
flag (1 或 -1 或0) #0代表UTC,1代表DST,-1代表自動判斷
3、格式化字串
%a 本地(locale)簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化月份名稱
%B 本地完整月份名稱
%c 本地相應的日期和時間表示
%d 一個月中的第幾天(01 - 31)
%H 一天中的第幾個小時(24小時制,00 - 23)
%I 第幾個小時(12小時制,01 - 12)
%j 一年中的第幾天(001 - 366)
%m 月份(01 - 12)
%M 分鐘數(00 - 59)
%p 本地am或者pm的相應符
%S 秒(01 - 61)
%U 一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天之前的所有天數都放在第0周
%w 一個星期中的第幾天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一為一個星期的開始。
%x 本地相應日期
%X 本地相應時間
%y 去掉世紀的年份(00 - 99)
%Y 完整的年份
%Z 時區的名字(如果不存在為空字元)
%% ‘%’字元

time模組

import time

返回當前時間的時間戳,浮點數形式,不需要引數

c = time.time()
print(c)

將時間戳轉為UTC時間元組

t = time.gmtime(c)
print(t)

將時間戳轉為本地時間元組

b = time.localtime(c)
print(b)

#將本地時間元組轉成時間戳

m = time.mktime(b)
print(m)

將時間元組轉成字串

s = time.asctime(b)
print(s)

將時間戳轉為字串

p = time.ctime(c)
print(p)

將時間元組轉換成給定格式的字串,引數2為時間元組,如果沒有引數2,預設轉當前時間

q = time.strftime("%Y-%m-%d %X", b)
print(q)
print(type(q))

將時間字串轉為時間元組

w = time.strptime(q, "%Y-%m-%d %X")
print(w)

延遲一個時間,整型或者浮點型

#time.sleep(4)

返回當前程式的cup執行時間

#Unix系統始終返回全部的執行時間
#windows從第二次開始,都是以第一個呼叫此函式的開始間戳作為基數
y1 = time.clock()
print("%d" % y1)    #輸出:0
time.sleep(2)
y2 = time.clock()
print("%d" % y2)  #輸出:2
time.sleep(2)
y3 = time.clock()
print("%d" % y3)    #輸出:4

應用:

#CPU效能測試
import time

time.clock()
sum = 0
for i in range(100000000):
    sum += i
print(time.clock())    #輸出:10.298342311553466

datetime模組
datetime比time高階了不少,可以理解為datetime基於time進行了封裝,提供了各位使用的函式,datetime模組的介面更直觀,更容易呼叫

datatime模組中的類:
datetime 同時有時間和日期
timedelta 主要用於計算時間的跨度
tzinfo 時區相關
time 只關注時間
date 只關注日期

示例:

    import datetime
   
    #獲取當前時間
    d1 = datetime.datetime.now()
    print(d1)    #輸出:2019-01-05 14:30:02.497453
    print(type(d1))    #輸出:<class 'datetime.datetime'>
    
    #獲取指定時間
    d2 = datetime.datetime(1999, 10, 1, 10, 28, 25, 123456)
    print(d2)    #輸出:1999-10-01 10:28:25.123456
    
    #將時間轉為字串
    d3 = d1.strftime("%Y-%m-%d %X")
    print(d3)    #輸出:2019-01-05 14:30:02
    print(type(d3))    #輸出:<class 'str'>
    
    #將格式化字串轉為datetime物件
    #注意:轉換的格式要與字串一致
    d4 = datetime.datetime.strptime(d3, "%Y-%m-%d %X")
    print(d4)    #輸出:2019-01-05 14:30:02
    d5 = datetime.datetime(1999, 10, 1, 10, 28, 25, 123456)
    d6 = datetime.datetime.now()
    d7 = d6 - d5
    print(d7)    #輸出:7036 days, 4:01:37.373997
    print(type(d7))    #輸出:<class 'datetime.timedelta'>
    
    #間隔的天數
    print(d7.days)    #輸出:7036
    
    #間隔天數除外的秒數
    print(d7.seconds)    #輸出:14497

日曆模組

呼叫:

import calendar

返回指定某年某月的日曆

print(calendar.month(2019, 7))
#輸出:
     July 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

返回指定年的日曆

print(calendar.calendar(2016))

閏年返回True,否則返回False

print(calendar.isleap(2000))
#輸出:True

返回某個月的weekday的第一天和這個月所有的天數
print(calendar.monthrange(2019, 7))
#輸出:(0, 31)

返回某個月以每一週為元素的列表

print(calendar.monthcalendar(2019,7))
#輸出:[[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, 0, 0, 0]]