Python 3 中的時間模塊。主要方法、模板、示例

幾乎所有程序都使用時間。 在 Python 中,為此開發了一個單獨的庫—— 時間用於執行各種操作。 為了使它工作,它必須首先在代碼的開頭聲明。 此行用於此目的:

導入時間

讓我們考慮如何在實踐中正確使用此模塊的不同選項。 

確定自紀元以來的秒數

為了完成這個任務,有一個函數 時間() 不帶參數。 它的返回值是自 1 年 1970 月 XNUMX 日以來已經過去了多少秒。在 Python 中,這個時間被稱為一個紀元的開始。 至少在 Unix 系列的操作系統中。

至於 Windows,日期是一樣的,但是這個日期之前的負值可能會出現問題。 

使用的時區是 UTC。

導入時間

秒 = time.time()

打印(“自紀元以來的秒數=”,秒)

這個函數的複雜之處在於它不能準確地顯示日期,而只顯示秒數。 要轉換為大家都熟悉的格式,您需要使用準確的信息。 為此,使用該功能 時間.ctime()。

以通常的格式返回日期、時間

要以通常的格式返回時間,有一個方法 時間.ctime()。 括號表示一個變量或一個數字,表示自紀元開始以來經過的秒數。 此方法返回所有日期和時間特徵,包括日期、年份、小時數、分鐘數、秒數和星期幾。

該函數也可以不帶參數使用。 在這種情況下,它返回當前日期、時間等。

這是一個演示這一點的代碼片段。

導入時間

打印(時間.ctime())

23 年 10 月 18 日,星期二 23:2018:XNUMX

最後一行是打印到運行 Python 解釋器的控制台的內容。 該方法自動將接收到的秒數格式化為用戶熟悉的形式。 誠然,上述所有元素都很少使用。 通常,您只需要獲取時間,或者只需要獲取今天的日期。 為此,使用了一個單獨的函數—— strftime()。 但在考慮之前,我們需要解析類 time.struct_time。

上課時間.struct_time

這是可以被一系列方法接受的一類參數。 它沒有任何選擇。 它是一個具有命名接口的元組。 簡單地說,這個類的元素可以通過名稱和索引號訪問。

它由以下屬性組成。Python 3 中的時間模塊。主要方法、模板、示例

注意力! 與許多其他編程語言不同,這裡的月份範圍可以從 1 到 12,而不是從 11 到 XNUMX。

返回特定格式

使用功能 時間() 您可以分別獲取年、月、日、小時、分鐘、秒並將它們返回到文本字符串。 然後可以使用該功能將其打印給用戶 打印 () 或以其他方式處理。

作為參數,函數可以採用任何變量,該變量採用該模塊的其他函數返回的值。 例如,您可以將本地時間傳輸給它(稍後將討論),它將從中提取必要的數據。

這是我們執行此操作的代碼片段。

導入時間

named_tuple = time.localtime() # 獲取 struct_time

time_string = time.strftime(《%m/%d/%Y,%H:%M:%S》,named_tuple)

打印(時間字符串)

如果您運行此代碼,將顯示當前日期和時間。 可以更改元素的格式和順序。 它們如下:

  1. %Y 是年份。
  2. %m 是月份。
  3. %d – 天。
  4. %H——時間。
  5. %M – 分鐘。
  6. %S——第二個。

因此,您可以使輸出僅包含月份和日期。 為此,您根本不需要給出顯示年份的命令。 也就是把上面的公式寫成參數%m/%d,就這樣。 反之亦然,%d/%m。 

事實上,字符串文字的數量要大得多。 這是一個詳細描述它們的表格。Python 3 中的時間模塊。主要方法、模板、示例

將線程推遲一定秒數

為此,使用該功能 睡覺 (). 相當大的編程任務塊與時間的流逝有關。 有時您必須將下一步推遲一段時間。 例如,如果您需要與需要一定時間來處理的數據庫進行交互。

作為參數,該方法使用一個值來表示從算法延遲下一步的秒數。

例如,在此代碼段中,延遲為 10 秒。

導入時間

暫停 = 10

print(«程序開始...»)

time.sleep(暫停)

print(str(pause) + » 秒過去了。»)

結果,我們將得到:

程序開始…

10秒過去了。

正如我們從輸出中看到的那樣,程序首先報告它已經啟動。 十秒鐘後,她寫道,這個時間已經過去了。

該函數允許您以毫秒為單位指定暫停的持續時間。 為此,我們使用函數參數的小數值 睡覺。 例如,0,1。 這意味著延遲將是 100 毫秒。

獲取當地時間

使用 localtime() 函數,程序獲取自特定時區中紀元開始以來的秒數。 

為了清楚起見,讓我們給出一個示例代碼。

導入時間

結果 = time.localtime(1575721830)

打印(“結果:”,結果)

打印(«nгод:»,結果.tm_year)

打印(«tm_hour:»,result.tm_hour)

根據自紀元以來的秒數以 UTC 格式返回 struct_time

這個任務是使用 time.gmtime() 來完成的。 方法。 如果我們舉個例子會更清楚。

導入時間

結果 = time.gmtime(1575721830)

打印(“結果:”,結果)

打印(«nгод:»,結果.tm_year)

打印(«tm_hour:»,result.tm_hour)

如果您打開這一系列操作,則會顯示一組與時間、年份和時區相關的元素。

返回自紀元開始以來的秒數,並自動轉換為本地時間

如果遇到這樣的任務,使用方法實現 時間(),這需要 結構時間. 之後,它執行函數的相反動作 當地時間()。 也就是說,它將根據本地時區的時間轉換為自紀元開始以來經過的秒數,並針對時區進行了調整。

mktime() 和 localtime() 函數緊密相連。 此代碼片段清楚地說明了這一點。 讓我們看一下它以更深入地了解它的工作原理。 

導入時間

秒 = 1575721830

# 返回結構時間

t = time.localtime(秒)

打印(«t1:«,t)

# 從 struct_time 返回秒數

s = 時間.mktime(t)

打印(«ns:»,秒)

我們看到變量 自紀元以來已分配 1575721830 秒。 首先,程序獲取準確的日期、時間等參數,根據這個值,放入一個變量中 t,然後將其內容轉換​​為變量 s.

之後換行並在控制台中顯示秒數。 您可以檢查它是否與分配給 seconds 變量的數字相同。

引用 struct_time 的 9 個數字的輸出日期

假設我們有 9 個數字代表年、月、日、星期幾和許多其他值,我們需要將它們組合成一個字符串。 為此,使用該功能 時間(). 她接受或準備好 結構時間, 或任何其他代表相同的 9 個值的元組。 之後,返回一個字符串,它是日期、時間和許多其他參數。 

使用此方法將不同的用戶指定數據放入單個變量中非常方便。.

例如,它可以是一個程序,其中用戶分別指定日、月、年、星期幾,以及與事件註冊有關的其他數據。 之後,收到的信息被輸入數據庫,然後發送給另一個請求它的人。

根據 Python 字符串獲取時間和日期

假設用戶指定了不同的數據,我們需要將它們以該人輸入的格式組合成一行,然後復製到另一個變量,並在那裡將其重建為標準格式。 為此,使用該功能 時間.strptime()。

它接受一個指定此值的變量,並返回我們已經熟悉的 結構時間.

為了清楚起見,我們將編寫這樣一個程序。

導入時間

time_string = «15 年 2019 月 XNUMX 日»

結果 = time.strptime(time_string, «%d %B, %Y»)

打印(結果)

猜猜輸出會是什麼? 嘗試猜測而不看底線。 然後檢查答案。

time.struct_time(tm_year=2019, tm_mon=6, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=166, tm_isdst=-1)

總之,在 Python 中處理日期和時間一點也不難。 遵循這些說明就足夠了,一切都會好起來的。 使用庫 時間 用戶獲得了大量使用時間的機會,例如:

  1. 暫停程序執行一段指定的時間。
  2. 顯示自紀元以來經過的時間,以秒為單位。 此信息可用於總結時間或對其執行其他數學運算。
  3. 轉換為方便的格式。 此外,程序員自己可以設置將顯示哪些元素以及以什麼順序顯示。 

還有許多其他的可能性,但今天我們分析了最基本的可能性。 它們將在幾乎任何以某種方式與時間一起工作的程序中派上用場。 祝你好運。

發表評論