python小專題——time模組

來源:互聯網
上載者:User

                                                                            time常用函數   

     最近參與python的一個項目,發現經常遇到一些常用的模組,而每次使用時,我都要查一遍。終於,我決定要各個擊破,對常用的python小知識進行總結。下面總結了python中對時間處理的常見函數。

在開始之前,首先要說明這幾點:

  1. 在Python中,通常有這幾種方式來表示時間:1)、時間戳記 2)、格式化的時間字串 3)、元組(struct_time)共九個元素。由於Python的time模組實現主要調用C庫,所以各個平台可能有所不同。
  2. UTC(Coordinated Universal Time,世界協調時)亦即格林威治天文時間,世界標準時間。在中國為UTC+8。DST(Daylight Saving Time)即夏令時。
  3. 時間戳記(timestamp)的方式:通常來說,時間戳記表示的是從1970年1月1日08:00:00開始按秒計算的位移量。運行“type(time.time())”,返回的是float類型。返回時間戳記方式的函數主要有time(),clock()等。
  4. 元組(struct_time)方式:struct_time元組共有9個元素,返回struct_time的函數主要有gmtime(),localtime(),strptime()。

     time的函數較多,但常用的也就那幾個。使用time函數前,照例先匯入time模組。介紹常用函數前要先瞭解最基礎的函數:

    (1)、time函數——返回目前時間的時間戳記,浮點數格式

>>> from time import *   #匯入python模組的所有函數>>> time()1370485361.442

    (2)、localtime函數——localtime([secs]),將一個時間戳記轉換為當前時區的struct_time。secs參數未提供,則以目前時間為準。

#預設以目前時間為準>>> localtime()time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=10, tm_min=39, tm_sec=49, tm_wday=3, tm_yday=157, tm_isdst=0)#等同於localtime()>>> localtime(time())time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=10, tm_min=40, tm_sec=37, tm_wday=3, tm_yday=157, tm_isdst=0)#指定一個時間戳記參數>>> localtime(1370485361.442)time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=10, tm_min=22, tm_sec=41, tm_wday=3, tm_yday=157, tm_isdst=0)#預設從1970年1月1日開始>>> localtime(345)time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=5, tm_sec=45, tm_wday=3, tm_yday=1, tm_isdst=0)>>> localtime(1)time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0)

   localtime()輸出參數說明:

索引(Index) 屬性(Attribute) 值(Values)
0  tm_year(年)  比如2013 
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(weekday)  0 - 6(0表示周日)
7  tm_yday(一年中的第幾天)  1 - 366
8  tm_isdst(是否是夏令時)  預設為-1

   

 

 

 

 

 

   

   

 

   (3)、gmtime()函數——和localtime()方法類似,gmtime()方法是將一個時間戳記轉換為UTC時區(0時區)的struct_time。

>>> gmtime()time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=4, tm_min=2, tm_sec=47, tm_wday=3, tm_yday=157, tm_isdst=0)>>> gmtime(time())time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=4, tm_min=2, tm_sec=53, tm_wday=3, tm_yday=157, tm_isdst=0)

    (4)、asctime()函數——asctime([tuple]), 把一個表示時間的元組或者struct_time表示為這種形式:'Sun Jun 20 23:21:05 1993'。如果沒有參數,將會將time.localtime()作為參數傳入。

>>> asctime()#預設是目前時間的struct time'Thu Jun 06 10:55:40 2013'>>> asctime(localtime())'Thu Jun 06 10:56:02 2013'

    (5)、ctime函數——ctime([secs]),把一個時間戳記(按秒計算的浮點數)轉化為time.asctime()的形式。如果參數未給或者為None的時候,將會預設time.time()為參數。它的作用相當於time.asctime(time.localtime(secs))。

>>> ctime() #等同於ctime(time())'Thu Jun 06 11:05:34 2013'>>> ctime(time())'Thu Jun 06 11:05:44 2013'#預設從1970年1月1日08:00:00開始>>> ctime(238)'Thu Jan 01 08:03:58 1970'>>> ctime(1)'Thu Jan 01 08:00:01 1970'

 以上是基礎的時間函數,下面是常用的時間處理函數。

 

       實際儲存中,更多的是儲存時間戳記(這樣易於時間的計算,有更好的儲存效能)而不是更易於我們閱讀的時間格式,所以,我們有將時間戳記轉換為普通時間格式的衝動——strftime函數。

     (6)、strftime函數——strftime(format[, tuple]): 把一個代表時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉化為格式化的時間字串。 如果tuple未指定,將傳入time.localtime()。如果元組中任何一個元素越界,ValueError的錯誤將會被拋出。

>>> strftime('%Y-%m-%d %H:%M:%S', localtime(time()))'2013-06-06 11:10:57'  #這是我們比較喜愛的時間格式>>> strftime('%Y-%m-%d', localtime())'2013-06-06'>>> strftime('%Y-%m-%d %X', localtime())  ==>  %X給出預設本地相應時間'2013-06-06 11:12:39'

 Format參數說明:

格式 含義
%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 時區的名字(如果不存在為空白字元)
%% ‘%’字元

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(7)、mktime()函數——mktime(tuple),將一個struct_time或者9個參數的時間元組轉化為時間戳記。

>>> mktime(localtime())1370490962.0>>> mktime(2013, 6, 6, 13, 3, 38, 1, 48, 0) #這樣寫是錯的Traceback (most recent call last):  File "<pyshell#28>", line 1, in <module>    mktime(2013, 6, 6, 13, 3, 38, 1, 48, 0)TypeError: mktime() takes exactly one argument (9 given)>>> mktime((2013, 6, 6, 13, 3, 38, 1, 48, 0))#注意這裡9個參數的元組作為一個參數1370495018.0>>> 

    (8)、strptime()函數——strptime(string[, format]):把一個格式化時間字串轉化為struct_time。它是strftime()的逆操作。

>>> strptime('2013-06-06 11:12:39','%Y-%m-%d %X')time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=11, tm_min=12, tm_sec=39, tm_wday=3, tm_yday=157, tm_isdst=-1)

 

   其他常用的時間函數:

  (9)、sleep()函數——sllep(secs),可以通過調用time.sleep來掛起當前的進程。time.sleep接收一個浮點型參數,表示進程掛起的時間。

     (10)、clock()函數——這個函數在不同的系統上含義不同。 在Linux系統上,它返回的是“進程時間”,它是用秒錶示的浮點數(時間戳記)。在windows作業系統上,time.clock() 返回第一次調用該方法到現在的秒數,其精確度高於1微秒。可以使用該函數來記錄程式執行的時間。

總結一下該函數有兩個功能:
  在第一次調用的時候,返回的是程式啟動並執行實際時間;
  以第二次之後的調用,返回的是自第一次調用後,到這次調用的時間間隔

>>> clock()1.655286571487689e-06   #第一次調用是程式已耗用時間>>> clock()8.366160976619078  #第二次調用是與第一次的時間間隔>>> clock()    #第三次調用是與第一次的時間間隔12.056175791433892>>> sleep(1)

 

 總結一下:

(1)、常見應用

    1)、擷取目前時間:

   time.time() 擷取目前時間戳
   time.localtime() 目前時間的struct_time形式
   time.ctime() 目前時間的字串形式

    2)、將時間戳記轉換為字串:

  time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    3)、將字串轉換為時間戳記:

  time.mktime(time.strptime('2013-06-06 09:00','%Y-%m-%d %H:%M'))

(2)、在Python中共有三種表達方式以及這三種方式之間的轉換:

   1)、timestamp

   2)、tuple或者struct_time

   3)、格式化字串。

 

當然time模組還有其它函數,目前還沒用到,用到再進行補充。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.