【第十三天】Python中有關(guān)時間的模塊

5.2

1.time包

計算機可以用來計時蝙眶,從硬件上來說愧沟,計算機主板上有一個計時的表
我們可以手動或者根據(jù)網(wǎng)絡時間來調(diào)表丁恭,這塊表有自己的電池
所以即使斷電我衬,表也不會停叹放,在硬件基礎(chǔ)上
計算機可以提供掛鐘時間(Wall Clock Time)
掛鐘時間是從某個固定時間起點到現(xiàn)在的時間間隔
對于UNIX系統(tǒng)來說饰恕,起點時間是1970年1月1日0點0分0秒
其他日期時間都是從掛鐘時間計算得到的,此外
計算機還可以測量CPU實際運行時間井仰,也就處理器時間(Processor Clock Time)
以測量計算機性能埋嵌,當CPU處于閑置狀態(tài)時,處理器時間會暫停

我們能通過py編程來管理時間和日期俱恶,標準庫time包提供了基本的時間功能
下面使用time包:

import time
print(time.time())     #掛鐘時間雹嗦,單位是秒

還能借助模塊time測量程序運行時間,比如:

import time
start = time.clock()
for i in range(100000):
    print(i**2)
end = time.clock()
print(end - start)       #打印19.904038合是,即CPU運行時間

上面的程序調(diào)用了兩次clock()方法了罪,從而測量鑲嵌其間的程序所用的時間
在不同的計算機系統(tǒng)上,clock()的返回值會有所不同聪全,在UNIX系統(tǒng)上
返回的是處理器時間泊藕,當CPU處于閑置狀態(tài)時,處理器時間會暫停
因此我們獲得的是CPU運行時間荔烧,在windows系統(tǒng)上吱七,返回的則是掛鐘時間

方法sleep()可以讓程序休眠,根據(jù)sleep()接受到的參數(shù)
程序會在某時間間隔之后醒來繼續(xù)運行:

import time
print("start")
time.sleep(10)     #休眠10秒
print("wake up")

time包還定義了struct_time對象鹤竭,該對象將掛鐘時間轉(zhuǎn)換為年踊餐,月,日臀稚,時吝岭,分,秒等
儲存在該對象的各個屬性中吧寺,比如tm_year,tm_mon,tm_mday......
下面幾種方法可以將掛鐘時間轉(zhuǎn)換為struct_time對象:

st = time.gmtime()           #返回struct_time格式的UTC時間

st = time.localtime()        #返回struct_time格式的當?shù)貢r間窜管,當?shù)貢r區(qū)根據(jù)系統(tǒng)環(huán)境決定

我們也可以反過來,把一個struct_time對象轉(zhuǎn)換為time對象:

s = time.mktime(st)          #將struct_time格式轉(zhuǎn)換成掛鐘時間

2.datetime包

datetime包是基于time包的一個高級包稚机,用起來更加便利
datetime可以理解為date和time兩個部分組成
date是指年月日構(gòu)成的日期幕帆,相當于日歷,time是指時分秒毫秒
構(gòu)成的一天24個小時中的具體時間赖条,提供了與手表類似的功能
因此失乾,datetime模塊下有兩個類:datetime.date類和datetime.time類
你也可以把日歷和手表合在一起使用,即直接調(diào)用datetime.datetime類
這里只介紹綜合性的datetime.datetime類纬乍,單獨的datetime.date類和datetime.time類與之類似

一個時間點碱茁,比如2012年9月3日21時30分,我們可以用如下方式表達:

import datetime

t = datetime.datetime(2012,9,3,21,30)
print(t)
2012-09-03 21:30:00

對象t具有如下屬性:
hour,minute,second,millisecond,microsecond
小時仿贬,分纽竣,秒,毫秒,微秒
year,month,day,weekday
年蜓氨,月聋袋,日,星期幾

借助datetime包语盈,我們還可以進行時間間隔的運算
它包含一個專門代表時間間隔對象的類舱馅,即timedelta
一個datetime.datetime的時間點加上一個時間間隔
就可以得到一個新的時間點,比如今天的上午3點加上5個小時
就可以得到一個時間間隔:

import datetime

t = datetime.datetime(2012,9,3,21,30)
t_next = datetime.datetime(2012,9,5,23,30)
delta1 = datetime.timedelta(seconds = 600)
delta2 = datetime.timedelta(weeks = 3)

print(t + delta1)        #打印2012-09-03 21:40:00
print(t + delta2)        #打印2012-09-24 21:30:00
print(t_next - t)        #打印2 days, 2:00:00

在給datetime.timedelta傳遞參數(shù)時刀荒,除了上面的秒(seconds)
和星期(weeks)外代嗤,還可以是天(days),小時(hours)缠借,毫秒(milliseconds)
微秒(microseconds)

兩個datetime對象能進行比較運算干毅,以確定哪個時間間隔更長
比如使用的t和t_next:

print(t>t_next)          #打印False

3.時間格式

對于包含有時間信息的字符串來說,我們可以借助datetime包
把它轉(zhuǎn)換為datetime類的對象泼返,比如:

from datetime import datetime

str = "output-1997-12-23-030000.txt"
format = "output-%Y-%m-%d-%H%M%S.txt"
t = datetime.strptime(str,format)
print(t)                 #打印1997-12-23 03:00:00

包含有時間信息的字符串是"output-1997-12-23-030000.txt"
是一個文件名硝逢,字符串format定義了一個格式
這個格式中包含了幾個由%引領(lǐng)的特殊字符,用來代表不同時間信息
%Y表示年份绅喉,%m表示月渠鸽,%d表示日,%H表示24小時制的小時柴罐,%M表示分徽缚,%S表示秒
通過strptime方法,py會把需要解析的字符串往格式上湊
比如說革屠,在格式中%Y的位置凿试,正好看到"1997",就認為1997是datetime對象t的年
以此類推,就從字符串中獲得了t對象的時間信息

反過來似芝,我們也可以調(diào)用datetime對象的strftime方法
將一個datetime對象轉(zhuǎn)換為特定格式的字符串那婉,比如:

from datetime import datetime

format = "%Y-%m-%d %H:%M"
t = datetime(2012,9,5,23,30)
print(t.strftime(format))     #打印2012-09-05 23:30

可以看到,格式化轉(zhuǎn)化的關(guān)鍵是%號引領(lǐng)的特殊符號
這些特殊符號有很多種党瓮,分別代表不同的時間信息详炬,常用的特殊符號還有:

%A:表示英文的星期幾,如Sunday,Monday...
%a:簡寫的英文星期幾寞奸,如Sun,Mon...
%I:表示小時痕寓,12小時制
%p:上午或者下午,即AM或PM
%f:表示毫秒蝇闭,如2,0014硬毕,000001

但如果想在格式中表達%這個字符本身呻引,而不是特殊符號,那么可以使用%%

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吐咳,一起剝皮案震驚了整個濱河市逻悠,隨后出現(xiàn)的幾起案子元践,更是在濱河造成了極大的恐慌,老刑警劉巖童谒,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件单旁,死亡現(xiàn)場離奇詭異,居然都是意外死亡饥伊,警方通過查閱死者的電腦和手機象浑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琅豆,“玉大人愉豺,你說我怎么就攤上這事∶R颍” “怎么了蚪拦?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長冻押。 經(jīng)常有香客問我驰贷,道長,這世上最難降的妖魔是什么洛巢? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任括袒,我火速辦了婚禮,結(jié)果婚禮上狼渊,老公的妹妹穿的比我還像新娘箱熬。我一直安慰自己,他們只是感情好狈邑,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布城须。 她就那樣靜靜地躺著,像睡著了一般米苹。 火紅的嫁衣襯著肌膚如雪糕伐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天蘸嘶,我揣著相機與錄音良瞧,去河邊找鬼。 笑死训唱,一個胖子當著我的面吹牛褥蚯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播况增,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼赞庶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起歧强,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤澜薄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后摊册,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肤京,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年茅特,在試婚紗的時候發(fā)現(xiàn)自己被綠了忘分。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡温治,死狀恐怖饭庞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熬荆,我是刑警寧澤舟山,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站卤恳,受9級特大地震影響累盗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜突琳,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一若债、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拆融,春花似錦蠢琳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至趟脂,卻和暖如春泰讽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昔期。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工已卸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人硼一。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓累澡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親般贼。 傳聞我的和親對象是個殘疾皇子永乌,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容