Python中的strftime()函數是一個非常常用的函數,主要用於將時間轉換成我們想要的格式,從而方便衡量時間的一些特定業務操作。
一、strftime()函數的基本概念
strftime()函數定義:strftime(format [, value])
其中 format 是格式指令字符串,用於定義輸出的日期或時間格式。
value 是一個可選的參數,用於指定格式化的時間,返回字符串表示按指定格式格式化的時間。
>>> import time
>>> print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
2019-09-06 21:08:02
上述代碼將當前時間格式化為2019-09-06 21:08:02的格式。strftime()函數的format參數既可以是指定格式的字符串,也可以是字符串的元組。通過元組形式構建格式化字符串可避免一些錯誤。例如:
>>>print(time.strftime('%Y %m %d %H:%M:%S',time.localtime()))
2019 09 06 21:15:55
以上代碼輸出表明將當前時間格式化輸出,並且中間的date部分使用了“ ”空格進行隔開。這是常見的年月日記錄方式。
二、strftime()函數常見格式字符串
1. 標準格式化指令
指令 | 含義 | 輸出例子 |
---|---|---|
%Y | 年份 | 1999, 2003, 2019 |
%m | 月份 | 01, 02, 03, …, 12 |
%B | 月份(全拼) | January, February, …, December |
%b | 月份(簡稱) | Jan, Feb, …, Dec |
%d | 日期 | 01, 02, 03, …, 31 |
%j | 當年中的天數 | 001, 002, …, 365, 366 |
%w | 星期 | 0, 1, 2, …, 6(周日為 0) |
%A | 星期(全拼) | Sunday, Monday, …, Saturday |
%a | 星期(簡稱) | Sun, Mon, …, Sat |
%H | 小時(24小時制) | 00, 01, 02, …, 23 |
%I | 小時(12小時制) | 01, 02, …, 12 |
%M | 分鐘 | 00, 01, 02, …, 59 |
%S | 秒 | 00, 01, 02, …, 59 |
%p | AM/PM | AM, PM |
%Z | 時區 | PST, CST, EST, EDT, GMT, UTC, GMT+8 |
%c | 完整的日期和時間表示 | Mon May 22 17:28:40 2017 |
%x | 長格式日期 | 05/08/17 |
%X | 長格式時間 | 17:28:40 |
2. Python strftime指令的拓展使用
可以使用Python strftime函數還可以進一步拓展對時間的輸出格式化。例如:
格式: %x:日期
格式:%X:時間
可使用的命令:
- 採用%F格式輸出完整的時間,如:“2017-09-06”表示日期,這在進行文件命名時特別便於排序;
- 採用%s格式輸出時間戳;
- 採用%a, %A, %b, %B輸出各類表示星期和月份的全名和縮寫;
- 時間的運算,可在時間表示字符串的基礎上,通過神器dateutil庫實現額外計算,例如統計某個月的天數,某個時間點過一個小時後的時間點是什麼,兩個時間點間隔的天數等等。
三、strftime()函數的常見運用場景
1. 將unix時間戳轉換為實際時間
>>> import time
>>> print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(123456789)))
1973-11-29 21:33:09
當你想要查看一個unix時間戳是什麼時候,可以藉助time.strftime()方法進行轉換輸出。
2. 將日期字符串轉換為指定格式字符串
>>> import datetime
>>> time_str = "2019-09-06 17:00:00"
>>> date_time = datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
>>> print(date_time.strftime("%Y年%m月%d日 %H時%M分%S秒"))
2019年09月06日 17時00分00秒
3. 按照年、月、日、小時分類文件
import os
import time
def classify(folder, file_list):
for file_name in file_list:
if '.txt' in file_name:
full_path = os.path.join(folder, file_name)
file_time = os.path.getmtime(full_path)
time_struct = time.localtime(file_time)
print(f"{file_name} 修改時間是: ", file_time, time_struct.tm_year, time_struct.tm_mon, time_struct.tm_mday, time_struct.tm_hour)
# test
folder = 'C:\\Users\\abc\\file_folder'
file_list = ['a.txt', 'b.xlsx', 'c.docx']
classify(folder, file_list)
以上函數可以將文件進行分類,按照年、月、日、小時分類,便於對文件的管理和查找。
4. 返回當前季度
import datetime
def get_quarter():
now = datetime.date.today()
month = now.month
day = now.day
quarter = 1 if month in [1, 2, 3] else (2 if month in [4, 5, 6] else (3 if month in [7, 8, 9] else 4))
return quarter
# test
print(get_quarter())
該函數可以方便的實現根據時間計算出當前的季度,便於對季度數據的統計。
四、總結
Python中的strftime()函數是一個很重要的時間函數,主要用於將時間轉換成想要的格式,方便衡量時間的一些特定業務操作。我們可以看到使用該函數,可以非常方便地處理重要的時間格式問題,將時間轉化為各種形式,並且可以進行一系列的節奏控制與數據處理的操作。希望讀者可以更好的利用Python的時間處理庫,解決具體場景中的時間問題。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/238748.html