一、概述:strptime和strftime函數
Python中的strptime函數和strftime函數具有極大的相似性,都是用來進行格式化輸出和時間字元串轉換。strptime是用來將時間字元串解析成時間格式的函數,而strftime則是用來將時間格式格式化為時間字元串的函數。strptime和strftime函數都依賴于格式化指令。
strptime 函數接收兩個參數:一個是字元串形式的日期時間,另一個是日期時間的格式。
strftime函數接收兩個參數:一個是日期時間的格式,另一個是時間元組。
二、strptime函數詳解
strptime函數可以將時間格式的字元串解析成時間元組。時間元組是由以下9個元素組成的:
struct_time(tm_year=2021, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=1, tm_isdst=-1)
其中,tm_year代表年份,從1900開始,所以如果要表示2021年,則tm_year的值為121。tm_mon代表月份,從1開始,範圍為1~12。tm_mday代表日期,從1開始,範圍為1~31。tm_hour代表小時,從0開始,範圍為0~23。tm_min代表分鐘,從0開始,範圍為0~59。tm_sec代表秒數,從0開始,範圍為0~61(60和61是閏秒)。tm_wday代表星期幾,從0開始,範圍為0~6,0為星期一,6為星期日。tm_yday代表一年中的第幾天,從1開始,範圍為1~366。tm_isdst代表是否為夏令時,-1代表不確定,0代表不是,1代表是。
下面是一個示例代碼:
from datetime import datetime date_time_str = '2022-05-08 10:00:00' date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S') print('日期時間對象:', date_time_obj)
以上代碼的輸出結果為:
日期時間對象:2022-05-08 10:00:00
strptime中常用的格式化指令如下:
格式化指令 | 說明 |
---|---|
%a | 星期幾的本地簡寫 |
%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 | 秒數(00~61) |
%U | 一年中的星期數(00~53),星期天是一個星期的起始 |
%w | 一個星期中的第幾天(0~6,0為星期天) |
%W | 一年中的星期數(00~53),星期一是一個星期的起始 |
%x | 本地相應的日期表示 |
%X | 本地相應的時間表示 |
%y | 年份的最後兩位數(00~99) |
%Y | 年份的完整表示,4位數 |
%z | 與UTC偏移的整小時數(+HHMM或-HHMM) |
%Z | 時區的名稱(為空白字元,或者美國標準縮寫) |
%% | 百分號 |
三、strftime函數詳解
strftime函數可以將時間元組格式化為時間字元串。下面是一個示例代碼:
from datetime import datetime now = datetime.now() time_string = now.strftime("%Y-%m-%d %H:%M:%S") print(time_string)
以上代碼的輸出結果為:
2022-05-08 18:30:00
常用的格式化指令與strptime函數中一致,此處不再贅述。
四、應用場景
strptime函數和strftime函數是處理時間的重要方法,應用場景非常廣泛。比如,在實際開發中,用戶輸入的數據往往是字元串格式的,而程序需要的是時間格式,這時就需要將字元串格式的數據使用strptime函數轉換為時間格式;又比如在數據分析過程中,我們需要對時間進行聚合和分組,而時間類型不方便進行直接的操作,這時就需要將時間格式使用strftime函數轉換為字元串格式。
五、總結
Python中的strptime和strftime函數是處理時間的常用方法,可以實現字元串與時間格式的相互轉換。strptime函數將時間字元串解析成時間元組,而strftime函數將時間元組解析成時間字元串。在實際開發中應用廣泛,是程序員處理時間的重要工具。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150989.html