python時間-time模塊

来源:http://www.cnblogs.com/scolia/archive/2016/06/11/5575376.html
-Advertisement-
Play Games

time是python自帶的模塊,用於處理時間問題,提供了一系列的操作時間的函數。 以下說明針對於 python2.7,其他版本可能有所差異。 模塊提供了兩個種表示時間的格式: 1.時間戳,是以秒錶示從“新紀元”到現在的時間,稱為 UTC 或者 GMT。這個“新紀元”指的就是1970年1月1日。所以 ...


  time是python自帶的模塊,用於處理時間問題,提供了一系列的操作時間的函數。

  以下說明針對於 python2.7,其他版本可能有所差異。

  模塊提供了兩個種表示時間的格式:

  1.時間戳,是以表示從“新紀元”到現在的時間,稱為 UTC 或者 GMT。這個“新紀元”指的就是1970年1月1日。所以時間戳指的就是從“新紀元”到某一個時間一共過去了多少秒,可能是一個整數,也可能是一個浮點數。至於為什麼會這樣,有興趣的可以讀下這篇文章:戳這裡

  2.一個包括 9 個元素的元祖,這 9 個元素分別為:

      year:4位數,表示年,例如:2016

      month:表示月份,範圍是 1-12

      day:表示天,範圍是 1-31

      hours:小時,範圍是 0-23

        minute:分鐘,範圍是 0-59

      seconds:秒,範圍是 0-59

        weekday:星期,範圍是 0-6,星期一是0,以此類推

      Julian day:是一年中的第幾天,範圍是 1-366

      DST:一個標誌,決定是否使用夏令時(關於夏令時:戳這裡),為 0 時表示不使用,為 1 時表示使用,為 -1 時,mktime() 方法會根據 date 和 time 來推測。一般情況下用不著。


FUNCTIONS

1. asctime([tuple]) -> string  

  將元祖格式的時間轉換成字元串格式。

例如: time.asctime((2016,5,11,12,30,50,5,163,0)) 

  

  如果 tuple 沒有給,將調用 localtime() 方法,獲取現在的時間。

 

2. clock() -> floating point number 

  這個有點特殊,會因系統的不同而不同,在 win 平臺中,第一次調用,返回的是進程運行的實際時間。而第二次之後的調用時是第一次調用以後到這次調用時間。(實際上是以WIN32上QueryPerformanceCounter()為基礎,它比毫秒錶示更為精確)

代碼示例:

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()

 

輸出:

  所謂的進程運行的時間,我覺得更像運行第一次調用的這段代碼所需的時間,因為不管在第一次調用前用 sleep 停頓又或是進行一其他操作,其輸出變化也不大。

import time

if __name__ == '__main__':
    b = []
    for x in range(1000):
        b.append(x)
    time.sleep(1)
    print "clock1:%s" % time.clock()
    time.sleep(1)
    print "clock2:%s" % time.clock()
    time.sleep(1)
    print "clock3:%s" % time.clock()

 

  我也不知道是不是我理解錯誤還是其他,現在先這樣理解著,有問題我以後再改正。

  而在 Unix 系統中(雖然 win 也是由 unix 發展而來的),它返回的是“進程時間”,它是用秒錶示的浮點數(時間戳)。

同樣的代碼,在CentOS6.7中運行:

其輸出為:

下麵是一段實驗代碼:

import time,urllib


if __name__ == '__main__':
    print 'start at:',time.ctime()

    try:
        ur_open = urllib.urlopen('http://www.facebook.com')
    except:
        print 'error',time.ctime()
    time.sleep(1)
    print "clock1:%s" % time.clock()

    try:
        ur_open = urllib.urlopen('http://www.facebook.com')
    except:
        print 'error',time.ctime()
    time.sleep(1)
    print "clock2:%s" % time.clock()

    try:
        ur_open = urllib.urlopen('http://www.facebook.com')
    except:
        print 'error',time.ctime()
    time.sleep(1)
    print "clock3:%s" % time.clock()

  我試圖多次打開一個“不存在”的網站,看看所謂的“進程時間”是什麼:

  可以看到我時間花費了1分多種,但是進程時間到最後卻只有 0.03 秒,參照這篇文章(戳這裡),我覺得應該是進程占用 cpu 的時間,因為打開遠程網頁屬於遠程 I/O 操作,並不需要大量的 cpu 計算,所以進程時間就很短了。當然這是我的推測,暫時沒有找到相應的文章說明,就先這樣理解著吧,以後有錯再改。

 

3. ctime(seconds) -> string 

  將一個時間戳(預設為當前時間)轉換成一個時間字元串。相當於  asctime(localtime(seconds))

 

4. gmtime([seconds]) -> (tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst) 

  將一個時間戳格式的轉換為UTC時區(0時區,中國為 UTC+8)的元祖格式。如果沒有給參數,則預設為本地時間。

  然而我實際的時間是14點,14 = 6 + 8。所以要註意下時區。

 

5.  localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min, tm_sec,tm_wday,tm_yday,tm_isdst) 

  將一個時間戳轉換為當前時區的元祖格式。如果沒有給參數,則預設為本地時間。

  

 

6. mktime(tuple) -> floating point number 

  將一個元祖格式的時間轉換為時間戳格式。

 

7. sleep(seconds) 

  線程將推遲指定的時間後運行,單位為秒。其精度為亞秒級。

  關於精度級別:

    分鐘級:以分鐘為單位,即速度按分鐘計算,7200轉/分
    秒級:以秒為單位,即速度按秒計算,1GHz/秒
    亞秒級:沒有達到秒的速度,即1GHz/1.2秒

8. time() -> floating point number 

  返回當前時間的時間戳。

  如果系統的時鐘支持,可能會出現分數的形式。

9. strftime(format[, tuple]) -> string 

  把一個代表時間的元組轉換為指定格式的字元串,如果沒有傳入 tuple ,將調用 localtime() 。如果元組中任何一個元素越界(不在範圍內),將拋出 ValueError 錯誤。

關於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的相應符 1
%S 秒(01 - 61) 2
%U 一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天之前的所有天數都放在第0周。 3
%w 一個星期中的第幾天(0 - 6,0是星期天) 3
%W 和%U基本相同,不同的是%W以星期一為一個星期的開始。  
%x 本地相應日期  
%X 本地相應時間  
%y 去掉世紀的年份(00 - 99)  
%Y 完整的年份  
%Z 時區的名字(如果不存在為空字元)  
%% ‘%’字元  

備註:

  1.“%p”只有與“%I”配合使用才有效果。

  2.文檔中強調確實是0 - 61,而不是59,閏年秒占兩秒。

  3.當使用strptime()函數時,只有當在這年中的周數和天數被確定的時候%U和%W才會被計算。

參考資料:戳這裡

例子:

 

10. strptime(string, format) -> struct_time 

  將字元串格式的時間轉換成元祖格式的。是上面方法的逆向。

總結:

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • java常量池技術 java中常量池技術說的通俗點就是java級別的緩存技術,方便快捷的創建一個對象。當需要一個對象時,從池中去獲取(如果池中沒有,就創建一個並放入池中),當下次需要相同變數的時候,不用重新創建,從而節省空間。 java八種基本類型的包裝類和對象池 java中的基本類型的包裝類、其中 ...
  • Java程式 --創建游標包 --存儲過程 推薦:http://www.cnblogs.com/roucheng/p/3504465.html ...
  • 作為一個經驗豐富的C/C++程式員, 肯定親手寫過各種功能的代碼, 比如封裝過資料庫訪問的類, 封裝過網路通信的類,封裝過日誌操作的類, 封裝過文件訪問的類, 封裝過UI界面庫等, 也在實際的項目中應用過, 但是回過頭仔細想想,其實以前自己寫過的這些代碼,只能是在特定的項目或者特定的環境中使用, 對 ...
  • 相關:http://www.cnblogs.com/roucheng/p/cfenge.html ...
  • 一、GCC簡介: The GNU Compiler Collection,通常簡稱GCC,是一套由GNU開發的編譯器集,為什麼是編輯器集而不是編譯器呢?那是因為它不僅支持C語言編譯,還支持C++, Ada, Objective C等許多語言。另外GCC對硬體平臺的支持,可以所無所不在,它不僅支持X8 ...
  • 很多的同學很少使用、或者乾脆不瞭解不可變類(Immutable Class)。直觀上很容易認為Immutable類效率不高,或者難以理解他的使用場景。其實不可變類是非常有用的,可以提高並行編程的效率和優化設計。讓我們跳過一些寬泛的介紹,從一個常見的並行編程場景說起: 假設系統需要實時地處理大量的訂單... ...
  • 在連sqlite資料庫時,用fetchall()查詢結果,是用row[0],row[1]這樣的方式來列印每列的結果 但是我想用row[“欄位名”]方式查詢怎麼辦? MySQLdb的實現方法是: conn=MySQLdb.connect(..., cursorclass=MySQLdb.cursors ...
  • 我們在使用OutLook或者NetAnt等工具的時候,一般都會被其複雜的界面所吸引,在這些界面中視窗被分割為若幹的區域,真正做到了視窗的任意分割。 那麼我們自己如何創建類似的界面,也實現視窗的任意的分割呢?要解決這個問題,在Visual C++6.0編程中就需要使用到MFC提供的CSplitterW ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...