與時間處理的有關(guān)模塊有哪些
- time
- datetime
- calendar
在python中淮摔,通常用時間戳弃甥、格式化的時間字符串和元組3種方式表示時間
時間戳
- 時間戳(timestamp)表示從1970年1月1日00時00分00秒開始計算的偏移量
就是從那個時間開始到現(xiàn)在的總毫秒數(shù)短纵。
import time
now = time.time()
print(now)
最后輸出的就是總毫秒
struct_time 元組
python的時間元組
序號 | 屬性 | 字段 | 值 |
---|---|---|---|
0 | tm_year | 4位數(shù)年 | 如2008 |
1 | tm_mon | 月 | 1~12 |
2 | tm_mday | 日 | 1~31 |
3 | tm_hour | 小時 | 1~23 |
4 | tm_min | 分鐘 | 0~59 |
5 | tm_sec | 秒 | 0~61(60或者61是閏秒) |
6 | tm_wday | 一周的第幾日 | 0~6(0是周一) |
7 | tm_yday | 一年的第幾日 | 1~366(儒略歷) |
8 | tm_isdst | 夏令時 | -1,0,1,-1是決定是否為夏令的旗幟 |
time 模塊
time()函數(shù)用于返回當前時間的時間戳
import time # 導入時間模塊
now = time.time() # 第一個time代表時間的這個模塊,后面time()代表函數(shù),次函數(shù)不需要傳參數(shù)
print(now)
localtime([secs])函數(shù)
localtime()函數(shù)的作用是格式化時間戳為本地時間,如果secs參數(shù)未輸入萝勤,就以當前時間為轉(zhuǎn)換標準.
import time # 導入時間模塊
# time.localtime()中time為模塊,localtime()為函數(shù)呐伞,次函數(shù)不穿參數(shù)就以現(xiàn)在的時間戳為參數(shù)敌卓,返回的是一個struct_time元組
print('time.localtime():{}'.format(time.localtime()))
gmtime([secs])函數(shù)
gmtime()函數(shù)用于將一個時間戳轉(zhuǎn)換為UTC時區(qū)(0時區(qū))的struct_time,可選的參數(shù)secs表示從unix元年到現(xiàn)在總秒數(shù)伶氢。但趟径,gmtime()的默認值為time.time(),函數(shù)返回time.struct_time類型的對象。
import time # 導入時間模塊
print(time.localtime())
print(time.gmtime()) #返回的是函數(shù)默認值癣防,即time.time()的struct_time的類型對象的UTC時間蜗巧。
如圖:上面為本地時間,下面一個為UTC時間
mktime(t)
mktime()函數(shù)用于執(zhí)行與gmtime()劣砍、localtime()相反的操作惧蛹,接收struct_time對象為參數(shù),返回用秒數(shù)表示時間的浮點數(shù)刑枝。如果輸入的值不合法香嗓,就會觸發(fā)oberflowerror或者valueerror。
import time # 導入時間模塊
t = (2018,9,18,19,39,30,3,4,5) # 輸入一個結(jié)構(gòu)化時間或者完整的9位數(shù)元組元素
print(time.mktime(t))
asctime([t]) 函數(shù)
asctime([t])用于接手時間元組并且返回一個可讀的形式為Sun Sep 24 08:09:45 2015(2016年9月24日 周日8時09分45秒)的字符串装畅。
ctime([secs])函數(shù)
ctime()函數(shù)用于把一個時間戳(按秒計算的浮點數(shù))轉(zhuǎn)化為time.asctime()的形式靠娱。如果未指定參數(shù),就會默認將time.time()作為參數(shù)掠兄。ctime相當于asctime(localtime())像云。
import time # 導入時間模塊
print(time.ctime(time.time())) # 對現(xiàn)在的時間戳返,回一個可讀形式的時間如下圖蚂夕。
sleeptime([secs])
sleep 函數(shù)用于推遲調(diào)用線程的運行迅诬,可以通過參數(shù)secs指定進程掛起的時間。
import time # 導入時間模塊
print(time.asctime()) # 設置一個對比進程開始的時間
time.sleep(10) # 推遲調(diào)用線程的運行婿牍,推遲10秒
print(time.asctime()) # 再次查看推遲之后的時間
# 結(jié)果如下圖侈贷。
clock()函數(shù)
clock()函數(shù)是用于浮點數(shù)計算的秒數(shù),返回cpu當前的時間等脂,用來衡量程序的耗時俏蛮。unix上為“進程時間”。
import time #導入時間函數(shù)
for i in range(100000): #寫一個for 循環(huán)
print(i)
print(time.clock()) # 返回進程的耗時
strftime()函數(shù)
strftime()函數(shù)用于接受時間元組上遥,并返回可讀字符串表示當?shù)貢r間搏屑,格式由參數(shù)format 決定。
import time # 導入時間模塊
t = (2018,9,18,19,39,30,3,4,5) # 寫一個結(jié)構(gòu)化時間或9位元素元組
t = time.mktime(t) # 轉(zhuǎn)換為時間秒數(shù)
print(time.strftime('%b %d %Y %H:%M:%S',time.localtime(t))) # 返回可讀字符串的當?shù)貢r間,其中time.localtime()函數(shù)會把秒數(shù)轉(zhuǎn)化為當?shù)氐囊粋€結(jié)構(gòu)化時間
strptime()函數(shù)
strptime()函數(shù)用于根據(jù)指定的格式把一個時間字符串解析為時間元組
import time # 導入time模塊
t = ('2018-09-09','%Y-%m-%d') #定義一個時間字符串粉楚,后面跟著其多對應的時間格式辣恋,要切記,當用‘-’連接時模软,后面格式就用'-'伟骨,如何是/,后面也用/
print(t)
三種時間格式的相互轉(zhuǎn)化
format string-->(time.strptime())-->struct_time-->(time.gmtime())-->timestamp
timestamp-->(time.localtime())-->struct_time-->(timee.strptime())-->format time
struct_time-->(time.asctime())-->%a %b %d %H:%M:%S %Y 串<--(timee.ctime())--timestamp
datetime模塊撵摆。
datetime是date和time 的結(jié)合體底靠,功能強大,支持從0001年到9999年特铝。即datetime.MINYEAR和datetime.MAXYEAR暑中。
datetime模塊下的5個類:
- datetime.date 表示日期的類。常用的屬性有鲫剿,year,month,day
- datetime.time 表示時間的類鳄逾。常用的屬性有 hour,minute,second,microsecond
- datetime.datetime 表示日期時間。
- datetime.timedelta 表示時間間隔灵莲,即兩個時間點之間的長度
- datetime.tzinfo 與時區(qū)有關(guān)的相關(guān)信息雕凹。
其中datetime.datetime類應用最為普遍和廣泛。
taday()
datetime.datetime.today() 表示返回一個當前的本地時間的datetime對象。
import datetime # 導入datetime模塊
print(datetime.datetime.today()) #datetime.datetime是類
now()
和tadoy()基本相似枚抵,卻別就是now()接受參數(shù)线欲,如果不寫,默認為當?shù)貢r間汽摹,或者傳入一個參數(shù)所指時區(qū)的本地時間李丰。
import time
print(datetime.datetime.now()) # 在此沒有傳入?yún)?shù),則默認為所在時區(qū)所指的本地時間逼泣。返回結(jié)果的形式和today()相同趴泌,類型都是datetime.datetime類
datetime.utcnow()
返回一個當前utc(0時區(qū))的時間對象.
import datetime
print(datetime.datetime.utcnow()) #返回一個utc時間的datetime類。類型為datetime.datetime
fromtimestamp(timestamp[,tz])
根據(jù)時間戳創(chuàng)建一個datetime對象,tz為指定時區(qū)信息
import datetime,time # 導入了兩個模塊拉庶,一個time用于獲取時間戳
print(datetime.datetime.fromtimestamp(time.time())) #參數(shù)tz我們提供一個當前時間的時間戳
utcfromtimestamp(timestamp)
根據(jù)時間戳創(chuàng)建一個datetime類嗜憔,不過返回的是utc時間的對象。
import time
print(datetime.datetime.utcfromtimestamp(time.time()))
對比fromtimestamp()和utcfromtimestamp()
strptime(date_string,format)
將格式字符串轉(zhuǎn)換為datetime對象氏仗,date_string值日期字符串,format為格式化方法
import datetime
d_t = datetime.datetime.now()
print("strptime 是",datetime.datetime.strptime(str(d_t),'%Y-%m-%d %H:%M:%S.%f'))
print("strptime 是",datetime.datetime.strptime('2018-09-09 20:34:25','%Y-%m-%d %H:%M:%S'))
strftime(format)
把時間轉(zhuǎn)為字符串格式吉捶,即str類
import datetime
now = datetime.datetime.now() #獲取現(xiàn)在的本地的時間
print(now)
now_str = datetime.datetime.strftime(now,'%Y-%m-%d %H:%M:%S') # 把時間轉(zhuǎn)為字符串格式
# datetime.datetime.strptime() # (cls,date_str,format) # 把字符串轉(zhuǎn)為時間類型
print(now_str)
print(type(now_str)) #可以看出now_str 為str類
n_day = '2017/8/20'
time = now - datetime.datetime.strptime(n_day,'%Y/%m/%d') #這個可以看出當時間為datetime.datetime類時,時間可以進行相互計算廓鞠。
print(time)