python time

在Python中,與時間處理有關(guān)的模塊就包括:time,datetime以及calendar泻红。這篇文章,主要講解time模塊霞掺。

日期時間基本知識

  • 在Python中谊路,通常有這幾種方式來表示時間:
  1. 時間戳
  1. 格式化的時間字符串
  2. 元組(struct_time)共九個元素

由于Python的time模塊實現(xiàn)主要調(diào)用C庫,所以各個平臺可能有所不同菩彬。

  • UTC(Coordinated Universal Time缠劝,世界協(xié)調(diào)時)亦即格林威治天文時間潮梯,世界標(biāo)準(zhǔn)時間。在中國為UTC+8惨恭。DST(Daylight Saving Time)即夏令時秉馏。
  • 時間戳(timestamp)的方式:通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量脱羡。我們運行type(time.time())萝究,返回的是float類型。返回時間戳方式的函數(shù)主要有time()锉罐,clock()等帆竹。
  • 元組(struct_time)方式:struct_time元組共有9個元素,返回struct_time的函數(shù)主要有g(shù)mtime()脓规,localtime()栽连,strptime()。下面列出這種方式元組中的幾個元素:
索引 屬性
0 tm_year(年) 比如:2011
1 tm_mon(月) 1-12
Paste_Image.png

函數(shù)說明

1) time.localtime([secs]):將一個時間戳轉(zhuǎn)換為當(dāng)前時區(qū)的struct_time侨舆。secs參數(shù)未提供秒紧,則以當(dāng)前時間為準(zhǔn)。

>>> time.localtime()
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=14, tm_min=14, tm_sec=50, tm_wday=3, tm_yday=125, tm_isdst=0)
>>> time.localtime(1304575584.1361799)
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=14, tm_min=6, tm_sec=24, tm_wday=3, tm_yday=125, tm_isdst=0)

2)time.gmtime(****[secs]****)**:和localtime()方法類似挨下,gmtime()方法是將一個時間戳轉(zhuǎn)換為UTC時區(qū)(0時區(qū))的struct_time熔恢。

>>>time.gmtime()
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=6, tm_min=19, tm_sec=48, tm_wday=3, tm_yday=125, tm_isdst=0)

3)time.time():返回當(dāng)前時間的時間戳。

>>> time.time() 
1304575584.1361799

4)time.mktime(t)**:將一個struct_time轉(zhuǎn)化為時間戳臭笆。

>>> time.mktime(time.localtime())
1304576839.0

5)time.sleep(secs):線程推遲指定的時間運行叙淌。單位為秒。
6)time.
clock():這個需要注意耗啦,在不同的系統(tǒng)上含義不同**凿菩。在UNIX系統(tǒng)上机杜,它返回的是“進程時間”帜讲,它是用秒表示的浮點數(shù)(時間戳)。而在WINDOWS中椒拗,第一次調(diào)用似将,返回的是進程運行的實際時間。而第二次之后的調(diào)用是自第一次調(diào)用以后到現(xiàn)在的運行時間蚀苛。(實際上是以WIN32上QueryPerformanceCounter()為基礎(chǔ)在验,它比毫秒表示更為精確)

import time  
if __name__ == '__main__':  
    time.sleep(1)  
    print "clock1:%s" % time.clock()  
    time.sleep(1)  
    print "clock2:%s" % time.clock()  
    time.sleep(1)  
    print "clock3:%s" % time.clock()

運行結(jié)果:

clock1:3.35238137808e-006
clock2:1.00004944763
clock3:2.00012040636

7)time.asctime([t]):把一個表示時間的元組或者struct_time表示為這種形式:'Sun Jun 20 23:21:05 1993'**。如果沒有參數(shù)堵未,將會將time.localtime()作為參數(shù)傳入腋舌。

>>> time.asctime()'Thu May 5 14:55:43 2011'

8)time.ctime([secs])**:把一個時間戳(按秒計算的浮點數(shù))轉(zhuǎn)化為time.asctime()的形式。如果參數(shù)未給或者為None的時候渗蟹,將會默認(rèn)time.time()為參數(shù)块饺。它的作用相當(dāng)于

time.asctime(time.localtime(secs))赞辩。
>>> time.ctime()'Thu May 5 14:58:09 2011'
>>> time.ctime(time.time())'Thu May 5 14:58:39 2011'
>>> time.ctime(1304579615)'Thu May 5 15:13:35 2011'

9)time.strftime(format[, t])**:把一個代表時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉(zhuǎn)化為格式化的時間字符串。如果t未指定授艰,將傳入time.localtime()辨嗽。如果元組中任何一個元素越界,ValueError的錯誤將會被拋出淮腾。
備注

“%p”只有與“%I”配合使用才有效果糟需。
文檔中強調(diào)確實是0 - 61,而不是59谷朝,閏年秒占兩秒(汗一個)洲押。
當(dāng)使用strptime()函數(shù)時,只有當(dāng)在這年中的周數(shù)和天數(shù)被確定的時候%U和%W才會被計算徘禁。

舉個例子:

>>> time.strftime("%Y-%m-%d %X", time.localtime())'2011-05-05 16:37:06'
Paste_Image.png
Paste_Image.png
Paste_Image.png

10)time.strptime(string[, format])**:把一個格式化時間字符串轉(zhuǎn)化為struct_time诅诱。實際上它和strftime()是逆操作。

>>> time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')
time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)

在這個函數(shù)中送朱,format默認(rèn)為:"%a %b %d %H:%M:%S %Y"娘荡。
最后,我們來對time模塊進行一個總結(jié)驶沼。
根據(jù)之前描述炮沐,在Python中共有三種表達(dá)方式:1)timestamp 2)tuple或者struct_time 3)格式化字符串。

官方文檔翻譯3.5.1

time-時間獲取和轉(zhuǎn)化

這個模塊提供了一些與時間相關(guān)的方法.更多相關(guān)功能請參考datetimecalendar模塊.
雖然這個模塊一直都可用,但并不是所有方法都可以在所有平臺上都可用.在這個模塊中大多數(shù)方法是調(diào)用C語言的同名庫.有時侯參考平臺文檔更有用,因為一些方法的語義隨平臺不同而不同.
下面是一些技術(shù)解釋和約定:

  • 紀(jì)云是一個時間開始的地方.'0'意味著某年1月1日零點,在Unix上是1970年,使用gmtime(0)來獲取這個紀(jì)云.
>>> import time
>>> time.gmtime(0)

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

  • 此模塊中的方法可能無法處理紀(jì)元前或遙遠(yuǎn)的未來的日期和時間.更遠(yuǎn)未來分界點是由C庫決定的,對于32位系統(tǒng)來說,典型的是2038年.
  • 2000年問題(y2k),Python依賴于C語言庫,一般來說沒有2000年問題,因為所有的日期和時間在內(nèi)部表示為自紀(jì)元秒.方法strptime()使用%y格式可以解析2位數(shù)的年份回怜。當(dāng)2位數(shù)字的年份被解析大年,他們是根據(jù)POSIX和ISO C標(biāo)準(zhǔn)轉(zhuǎn)換:值69-99被映射到1969年至1999年,值0-68被映射到2000至2068年玉雾。
  • UTC是代表世界時間(前身為格林威治時間翔试,或GMT)「囱縮寫UTC是不是一個錯誤垦缅,它是英語和法語之間的妥協(xié).
  • DST是夏令時,(通常情況下)在不同時區(qū)調(diào)整一年中的小時驹碍。 DST規(guī)則是魔術(shù)(由當(dāng)?shù)胤纱_定)壁涎,可以每年都在變化。 C庫有一個包含本地規(guī)則的表(通常是從靈活的系統(tǒng)文件中讀戎就骸)怔球,是真正的智慧在這方面的唯一來源。
  • 各種實時函數(shù)的精確度可能小于由其中它們的值或參數(shù)所表示的單位浮还。 例如竟坛。在大多數(shù)Unix系統(tǒng)中,時鐘“滴答”只有50或100次。
  • 另一方面,time()sleep()精度要優(yōu)于Unix,時間被表示為否點數(shù),time()返回最精確時間(使用Unix的gettimeofday()如果有的話),sleep()接受一個非零的分?jǐn)?shù)(Unix使用select()來實現(xiàn),如果有的話).
  • 時間值是由gmtime()
    ,localtime()
    , strptime()
    ,和通過傳遞參數(shù) asctime()
    , mktime()
    and strftime()
    的方法返回的9個序列. gmtime()
    , localtime()
    , 和strptime()
    的返回值也提供各個字段名屬性.
    請參考struct_time
    對象描述.
    Changed in version 3.3:struct_time
    擴展提供了tm_gmtofftm_zone屬性當(dāng)平臺支持相應(yīng)的struct tm成員時.
  • 使用下面的函數(shù)轉(zhuǎn)換:

這個模塊定義了如下方法和數(shù)據(jù)項:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末担汤,一起剝皮案震驚了整個濱河市又官,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌漫试,老刑警劉巖六敬,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異驾荣,居然都是意外死亡外构,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門播掷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來审编,“玉大人,你說我怎么就攤上這事歧匈±莩辏” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵件炉,是天一觀的道長勘究。 經(jīng)常有香客問我,道長斟冕,這世上最難降的妖魔是什么口糕? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮磕蛇,結(jié)果婚禮上景描,老公的妹妹穿的比我還像新娘。我一直安慰自己秀撇,他們只是感情好超棺,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呵燕,像睡著了一般棠绘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虏等,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天弄唧,我揣著相機與錄音适肠,去河邊找鬼霍衫。 笑死,一個胖子當(dāng)著我的面吹牛侯养,可吹牛的內(nèi)容都是我干的敦跌。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼柠傍!你這毒婦竟也來了麸俘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤惧笛,失蹤者是張志新(化名)和其女友劉穎从媚,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體患整,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡拜效,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了各谚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紧憾。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖昌渤,靈堂內(nèi)的尸體忽然破棺而出赴穗,到底是詐尸還是另有隱情,我是刑警寧澤膀息,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布般眉,位于F島的核電站,受9級特大地震影響潜支,放射性物質(zhì)發(fā)生泄漏煤篙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一毁腿、第九天 我趴在偏房一處隱蔽的房頂上張望辑奈。 院中可真熱鬧,春花似錦已烤、人聲如沸鸠窗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稍计。三九已至,卻和暖如春裕循,著一層夾襖步出監(jiān)牢的瞬間臣嚣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工剥哑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留硅则,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓株婴,卻偏偏與公主長得像怎虫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

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