python語言time庫和datetime庫基本使用詳解
今天是邊複習邊創作部落格的第三天,我今年大二,我們專業開的有這門課程,因為喜歡所以更加認真學習,本以為沒人看呢,看了後臺瀏覽量讓我更加認真創作,這篇部落格花了2個半小時的時間,結合自己所學,所思,所想寫作,目的是為了方便喜歡Python的小白學習,也是一種自我鞭策吧!
python語言使用內建time庫和datetime庫來處理日期時間
相關術語的解釋
- UTC time Coordinated Universal Time,世界協調時,又稱 格林尼治天文時間、世界標準時間。與UTC time對應的是各個時區的local time,東N區的時間比UTC時間早N個小時,因此UTC time + N小時 即為東N區的本地時間;而西N區時間比UTC時間晚N個小時,即 UTC time - N小時 即為西N區的本地時間; 中國在東8區,因此比UTC時間早8小時,可以以UTC+8進行表示。
- epoch time 表示時間開始的起點;它是一個特定的時間,不同平臺上這個時間點的值不太相同,對於Unix而言,epoch time為 1970-01-01 00:00:00 UTC。
- timestamp(時間戳) 也稱為Unix時間 或 POSIX時間;它是一種時間表示方式,表示從格林尼治時間1970年1月1日0時0分0秒開始到現在所經過的毫秒數,其值為float型別。 但是有些程式語言的相關方法返回的是秒數(Python就是這樣),這個需要看方法的文件說明。需要說明的是時間戳是個差值,其值與時區無關。
呼叫庫的三種方式:
以time庫為例,呼叫其它庫類似
from time import * (*代表time包含所有的時間處理函式,用到某個也可單定義,呼叫函式時直接使用,比如:clock()) import time (呼叫函式方式,比如:time.clock()) import time as t (自定義庫的名稱,呼叫時方便,比如:t.clock())
time庫的主要的三類函式:
以上面第三種庫呼叫方式舉例
1.時間獲取:t.time();t.ctime();t.gmtime() #每種獲取時間不一樣,根據需求使用
2.程式計時:t.clock();t.perf_counter() #使用方式一樣
3.時間格式化:t.strftime(format,t);t.strptime(string,format)
#format表示要定義的格式,t表示獲取的時間,string表示字串型別時間
字串格式化:%y 兩位數的年份表示(00-99)
%Y 四位數的年份表示(000-9999)
%m 月份(01-12)
%d 月內中的一天(0-31)
%H 24小時制小時數(0-23)
%M 分鐘數(00=59)
%S 秒(00-59)
4.程式休眠:t.sleep()
#使用舉例 import time as t t0=t.gmtime() print(t0) t1="2020-12-23 19:23:20" t2 = t.strptime(t1,"%Y-%m-%d %H:%M:%S") t3 = t.strftime("%y/%m/%d %H:%M:%S") print(t2) print(t3)
列印結果:
C:\Users\86185\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/86185/PycharmProjects/untitled/Python複習/hk.py
time.struct_time(tm_year=2020,tm_mon=12,tm_mday=23,tm_hour=12,tm_min=22,tm_sec=39,tm_wday=2,tm_yday=358,tm_isdst=0)
time.struct_time(tm_year=2020,tm_hour=19,tm_min=23,tm_sec=20,tm_isdst=-1)
20/12/23 20:22:39Process finished with exit code 0
time模組主要用於時間訪問和轉換,這個模組提供了各種與時間相關的函式。
方法/屬性 | 描述 |
---|---|
time.altzone | 返回與utc時間的時間差,以秒為單位(西區該值為正,東區該值為負)。其表示的是本地DST 時區的偏移量,只有daylight非0時才使用。 |
time.clock() | 返回當前程序所消耗的處理器執行時間秒數(不包括sleep時間),值為小數;該方法Python3.3改成了time.process_time() |
time.asctime([t]) | 將一個tuple或struct_time形式的時間(可以通過gmtime()和localtime()方法獲取)轉換為一個24個字元的時間字串,格式為: "Fri Aug 19 11:14:16 2016"。如果引數t未提供,則取localtime()的返回值作為引數。 |
time.ctime([secs]) | 功能同上,將一個秒數時間戳表示的時間轉換為一個表示當前本地時間的字串。如果引數secs沒有提供或值為None,則取time()方法的返回值作為預設值。ctime(secs)等價於asctime(localtime(secs)) |
time.time() | 返回時間戳(自1970-1-1 0:00:00 至今所經歷的秒數) |
time.localtime([secs]) | 返回以指定時間戳對應的本地時間的 struct_time物件(可以通過下標,也可以通過 .屬性名 的方式來引用內部屬性)格式 |
time.localtime(time.time() + n*3600) | 返回n個小時後本地時間的 struct_time物件格式(可以用來實現類似crontab的功能) |
time.gmtime([secs]) | 返回指定時間戳對應的utc時間的 struct_time物件格式(與當前本地時間差8個小時) |
time.gmtime(time.time() + n*3600) | 返回n個小時後utc時間的 struct_time物件(可以通過 .屬性名 的方式來引用內部屬性)格式 |
time.strptime(time_str,time_format_str) | 將時間字串轉換為struct_time時間物件,如:time.strptime('2017-01-13 17:07','%Y-%m-%d %H:%M') |
time.mktime(struct_time_instance) | 將struct_time物件例項轉換成時間戳 |
time.strftime(time_format_str[,struct_time_instance]) | 將struct_time物件例項轉換成字串,如果struct_time_instance不指定則取當前本地時間對應的time_struct物件 |
datetime庫主要的四類函式:
datetime庫是基於time庫進行了封裝;以import datetime as dt 為datetime庫呼叫方式
1.date:表示的是日期物件 #dt.date
2.time;表示的是時間物件 #dt.time ;一般不用date和time函式,datetime函式包含其功能
3.datetime:表示的是日期時間物件#dt.datetime.now()表示獲取當前時間;dt.strftime(format) # 按照 format 進行格式化輸出
4.timedelta:主要用於定義計算時間跨度 #t=dt.timedelat(hours=10)表示定義時間跨度是10小時
用分隔符'''分類展示如下:
import datetime as dt now = dt.datetime.now() # 獲取當前datetime print(now) 輸出結果:2019-05-07 16:28:07.198690 ''' d = dt.date(2020,12,23) print(d) print('year:',d.year) print('month:',d.month) print('day:',d.day) 輸出結果: 2020-12-23 year: 2020 month: 12 day: 23 ''' ''' date1=dt.date(2020,23) timedel=dt.timedelta(days=4)#表示時間跨度為4天 print('四天後的日期是:',date1+timedel) 輸出結果:四天後的日期是:2020-12-27 '''
最後配上一段小程式:文字進度條列印程式分析
import time scale = 100 #這個可以隨意設定,看需求 print("執行開始".center(scale//2,'-'))# .center(a,'b')函式是居中符,這條程式是將“執行開始”居中佔字元為scale//2(可看需求自定義),b為填充符 starttime = time.clock() #time庫內建函式,第一次使用是開始計時 for i in range(scale+1): a = '*' * i #將'*'字元隨i的增加而增加 b = '.' * (scale - i) #將'.'字元隨‘*'增加而減少,兩個字元總數是scale的初始值數量 c = (i/scale) * 100 #求百分比 t = time.clock()-starttime #計算時間,第二次呼叫time.clock函式表示計時結束 print("\r{:^3.0f}%[{}->{}]{:.2}s".format(c,a,b,t),end="")#字元格式化,看需求,自己玩就是咋好看咋格式化 time.sleep(0.05) #time.sleep()函式表示讓程式休眠,裡面引數是休眠時間根據需求隨意定義 print("\n"+"執行結束".center(scale//2,'-'))#同上;"\n表示換行列印";"+"連線符,具有連線功能
關於datetime模組的datetime類會在下面做詳細講解,這裡簡單說下time.struct_time。
time.struct_time包含如下屬性:
下標/索引 | 屬性名稱 | 描述 |
---|---|---|
0 | tm_year | 年份,如 2017 |
1 | tm_mon | 月份,取值範圍為[1,12] |
2 | tm_mday | 一個月中的第幾天,取值範圍為[1-31] |
3 | tm_hour | 小時, 取值範圍為[0-23] |
4 | tm_min | 分鐘,取值範圍為[0,59] |
5 | tm_sec | 秒,取值範圍為[0,61] |
6 | tm_wday | 一個星期中的第幾天,取值範圍為[0-6],0表示星期一 |
7 | tm_yday | 一年中的第幾天,取值範圍為[1,366] |
8 | tm_isdst | 是否為夏令時,可取值為:0,1 或 -1 |
屬性值的獲取方式有兩種:
- 可以把它當做一種特殊的有序不可變序列通過 下標/索引 獲取各個元素的值,如t[0]
- 也可以通過 .屬性名 的方式來獲取各個元素的值,如t.tm_year。
需要說明的是struct_time例項的各個屬性都是隻讀的,不可修改。
到此這篇關於python語言time庫和datetime庫基本使用詳解的文章就介紹到這了,更多相關python time庫和datetime庫內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!